【发布时间】:2020-03-02 22:49:58
【问题描述】:
我很困惑,因为我发现了几个不同版本的如何在 .NET Core 3 下的 Entity Framework 中正确定义导航属性。我找到了这样的版本:
public List<MyObj> MyObjects {set; get;}
public List<MyObj> MyObjects {get;} = new List<MyObj>();
public virtual List<MyObj> MyObjects {set; get;}
public virtual List<MyObj> MyObjects {get;} = new List<MyObj>();
public ICollection<MyObj> MyObjects {set; get;}
public virtual ICollection<MyObj> MyObjects {set; get;}
还有一些。但是哪一个是最合适/最新/正确的版本?按照Microsoft's documentation的说法,第一个应该是对的,但我也找到了不同写法的老文章。
【问题讨论】:
-
我从来没有使用过第一种以外的其他类型。是列表最简单最好的声明(不是数组,不是集合)
-
@AlleXyS 我读到,您应该将它们标记为虚拟以允许延迟加载。我知道,这在 EF6 中使用 DB 优先方法是必须的。但在新的 .NET Core 世界中仍然如此吗?抱歉我的愚蠢问题,但这是我的第一个代码优先项目。
标签: entity-framework .net-core