一、首先了解下Entity Framework 自动关联查询:Entity Framework 自动关联查询,有三种方法:Lazy Loading(延迟加载),Eager Loading(预先加载),Explicit Loading(显式加载),其中Lazy Loading和Ex ...
一、首先了解下Entity Framework 自动关联查询:
Entity Framework 自动关联查询,有三种方法:Lazy Loading(延迟加载),Eager Loading(预先加载),Explicit Loading(显式加载),其中Lazy Loading和Explicit Loading都是延迟加载。
(注:由于Entity Framework版本的不同,以及采用不同的模式(DB First,Model First,Code First)来构建的Entity,最终导致可能自动关联查询的方法也有所不同,本文中的示例代码均以Entity Framework 6.0,且采用Code First模式来构建的Entity为基础)
一、Lazy Loading(延迟加载):这是默认情况(默认实体上下文对象的属性:Configuration.LazyLoadingEnabled=true,若该属性设为false则无效),若实体类型包含其它实体类型(POCO类)的属性(也可称为导航属性),且同时满足如下条件即可实列延迟加载,
1.该属性的类型必需为public且不能为Sealed;
2.属性标记为Virtual
作用:在您访问导航属性时,会从数据源自动加载相关实体,若实体尚未在 实体上下文对象中,则您访问的每个导航属性都会导致针对数据源执行一个单独的查询。
示例代码如下:
[Table("User",Schema="dbo")] public class User { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [Display(Name = "用户ID")] public int ID { get; set; } [Required] [MinLength(6)] [MaxLength(15)] [Unique("User", "UserName")] [Display(Name = "用户名")] public string UserName { get; set; } [Required] [Display(Name = "密码")] public string Password { get; set; } [Required] [Display(Name = "用户类型")] public int UserTypeID { get; set; } [ForeignKey("UserTypeID")] public virtual UserType UserType { get; set; } //此属性在查询User时,会自动依据UserTypeID 关联查旬UserType ,并将结果赋值给UserType 属性 }
原标题:关于Entity Framework自动关联查询与自动关联更新导航属性对应的实体注意事项说明
关键词:
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。