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

时间:2015-03-27 12:32:14

标签: entity-framework entity-framework-6

我与

有一对一的关系

1盒完全属于1双鞋。

  • 当我加载所有框时,我希望所有鞋子也都是懒人装。
  • 当我加载所有鞋子时,我想要所有盒子也都是懒人装

如何定义导航/外键属性?

1 个答案:

答案 0 :(得分:0)

EF允许您以一对一的关系映射FK的唯一方法是在依赖端将FK声明为PK时(检查此link以获取更多信息)

//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; }

}

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