导航属性应该是虚拟的-ef核心中不需要吗?
我记得在EF 导航属性应为virtual:
public class Blog {
public int BlogId { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public string Tags { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
但是我看的是EF Core,但并不认为它是虚拟的:
public class Student {
public int ID { get; set; }
public string LastName { get; set; }
public string FirstMidName { get; set; }
public DateTime EnrollmentDate { get; set; }
public ICollection<Enrollment> Enrollments { get; set; }
}
不再需要了吗?
回答:
virtual
在EF 中从未 。仅当您需要延迟加载支持时才需要它。
由于EF Core尚不支持延迟加载,因此目前
virtual
没有特殊含义。他们将在何时(以及是否)添加延迟加载支持(有这样做的计划)。
从EF Core 2.1开始,现在支持延迟加载。但是,只要您不添加Microsoft.EntityFrameworkCore.Proxies包并通过启用它UseLazyLoadingProxies
,原始答案仍然适用。
但是,如果这样做,由于在最初的实现中缺少选择加入控件,情况将完全改变-它 要求 导航属性
virtual
。对我来说这是没有意义的,您最好在修复之前不要使用它。如果您确实需要延迟加载,请使用替代的不使用代理的延迟加载
方法,在这种情况下,virtual
也不再重要。
以上是 导航属性应该是虚拟的-ef核心中不需要吗? 的全部内容, 来源链接: utcz.com/qa/400697.html