外键为空的EF导航属性
本文关键字:EF 导航 属性 | 更新日期: 2023-09-27 18:11:08
我第一次尝试使用导航属性来代替连接。我不能得到的情况下,它通常会完成与左外连接。在下面的示例中,我只得到外键非空的结果。我需要所有的结果。我错过了什么?
public class User
{
[Key]
public int UserID {get;set;}
public String Name {get;set;}
}
public class Shipment
{
[Key]
public int ShipmentID {get;set;}
public int? SignedForByID {get;set;}
[ForeignKey("SignedForByID")]
public virtual User SignedForBy{get;set;}
}
导航属性映射:
Shipment.HasOptional(x=> x.SignedForBy).WithMany()
.HasForeignKey(y=> y.SignedForByID).WillCascadeOnDelete(false);
查询:var data = (from s in context.Set<Shipment>()
select new {
ShipmentID = s.ShipmentID,
SignedForBy = s.SignedForBy
});
这个例子中没有显示这个问题。映射是由助手类生成的。在某些情况下,helper类错误地使用. hasrequired()方法而不是. hasoptional()方法映射导航属性。修正映射类已经修复了这个问题。