ef4.1执行连接查询内连接和左连接

当我们做多表查询时  用Include 强制加载 或用 select 去查询时  发现生成的SQL语句 有时是左连接  有时是inner join。

其实EF是根据我们实体类的连接字段 是否可空来判断的~比如外键 RefID 

inner join写法:

  public  int RefID { get; set; }

在OnModelCreating事件中配置

modelBuilder.Entity<MyProject>.HasRequired(r=>r.RefProject).WithMany().HasForeignKey(t=>t.RefId); 

 

left join写法:

public  int? RefID { get; set; }

在OnModelCreating事件中配置 

modelBuilder.Entity<MyProject>.HasOptional(r=>r.RefProject).WithMany().HasForeignKey(t=>t.RefId);

红色部分为两者区别,要特别注意。

posted @ 2013-03-17 11:10  dct_it  阅读(2606)  评论(0编辑  收藏  举报