为延迟加载定义一个 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 不会创建支持更改跟踪和延迟加载的代理对象。
我有
的一对一关系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 不会创建支持更改跟踪和延迟加载的代理对象。