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);
红色部分为两者区别,要特别注意。