导航属性应该是虚拟的-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

回到顶部