使用 Entity Framework Core 的 WithOptional

21

我正在尝试将我的旧应用程序迁移到新的EF Core,但是我找不到某些关系,例如:

  HasRequired(o => o.Document).WithOptional(o => o.CancelNote);

有一些扩展方法吗?我在文档中找不到。

HasRequired 我认为可以用 HasOne() 方法替换,但是 WithOptional() 怎么办?

还有一件事情,根据文档,实体不使用 virtual 关键字创建导航属性,懒加载将如何工作?


请提供Document和CancelNote的类声明。 - Karthic G
1个回答

34

在EF7中,您将找不到HasOptional相应的方法。按照惯例,如果您的FK属性是可为空的,则导航属性将被视为可选。

 modelBuilder.Entity<Blog>()
                .HasOne(p => p.Document)
                .WithOne(i => i.CancelNote)
                .HasForeignKey<Document>(b => b.CancelNoteForeignKey);

关于你的第二个问题,EF Core(EF7)不支持延迟加载。在这个链接中,你可以找到现在加载相关实体的选项。


但是我的FK属性是Document实体:public virtual Document Document {get;set;} 这个属性应该是可空的吗? - gog
不,你指出的是导航属性,你的FK属性应该是:public int? CancelNoteForeignKey{get;set;} - ocuenca
HasOne()是HasOptional()的替代品吗? - Karthic G
如何在不知道类模型和外键属性的情况下指定HasForeignKey - Karthic G
请您提供关于这个关系的类模型,以便更容易理解概念。 - Karthic G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接