你的位置:首页 > 软件开发 > ASP.net > 关于Entity Framework自动关联查询与自动关联更新导航属性对应的实体注意事项说明

关于Entity Framework自动关联查询与自动关联更新导航属性对应的实体注意事项说明

发布时间:2015-05-19 20:00:27
一、首先了解下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 (#换成@)。

可能感兴趣文章

我的浏览记录