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

Define a 1 to 1 relation navigation property for lazy loading

我有

的一对一关系

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

如何定义我的 navigation/foreign 键 属性?

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

}

现在,关于延迟加载行为,如果您想为您的实体启用延迟加载并让 Entity Framework 跟踪您的 类 随着变化的发生。如果您不将导航 属性 声明为 virtual(如 Box 实体中的 Shoes),则它不会延迟加载,因为 EF 不会创建支持更改跟踪和延迟加载的代理对象。