为延迟加载定义一个1对1关系导航属性



我有的1比1关系

一个盒子正好属于一双鞋。

  • 当我装载所有箱子时,我确实希望所有鞋子也都是惰性装载的
  • 当我装载所有鞋子时,我确实希望所有箱子也被惰性装载

我必须如何定义我的导航/外键属性?

EF允许您以一对一关系映射FK的唯一方法是在依赖端将FK也声明为PK时(查看此链接了解更多信息)

//Principal end
public class Shoes
{
    public int Id { get; set; }
    public virtual Box Box { get; set; }
}
//Dependent end
public class Box
{
    [Key,ForeignKey("Shoes")]
    public int ShoesId { get; set; }
    public Shoes Shoes { get; set; }
}

现在,关于延迟加载行为,EF有一些要求,如果您想为实体启用延迟加载,并让实体框架在更改发生时跟踪类中的更改,则必须遵守这些要求。如果您没有将导航属性声明为virtual(如Box实体中的Shoes),则它将不会延迟加载,因为EF不会创建支持更改跟踪和延迟加载的代理对象。

最新更新