EF中一对多的最佳方法

本文关键字:最佳 方法 一对多 EF | 更新日期: 2023-09-27 18:10:17

我想问你们,这两种方法有什么不同。

场景1

public class Foo
{
    public int FooId { get; set; }
    public virtual Bar Bar { get; set; }
}
public class Bar
{
    public int BarId { get; set; }
}

场景2

public class Foo
{
    public int FooId { get; set; }
    public int BarId { get; set; }
    public virtual Bar Bar { get; set; }
}
public class Bar
{
    public int BarId { get; set; }
    public virtual ICollection<Foo> Foos { get; set; }
}

在这两种情况下,EF都将生成具有适当列和外键的表。那么,是一种情况比另一种情况好吗?

很抱歉我的英语不好,谢谢你的帮助

EF中一对多的最佳方法

没有好坏之分。

从代码优先中推导出的EDM模型在两种情况下非常相似(可能相等)。

然而,有一个非常重要的区别:在第二种情况下,你可以访问第一种情况中缺少的一些东西:

  • Foo中的BarId
  • Bar中的Foos

除了这个差异之外,内存中的EDM模型和对模型进行的查询行为将是相同的。

所以唯一的问题是:你需要从Bar访问Foos吗?您是否需要访问Foo中的BarId ?这是唯一真正的区别