例如有3个实体
public class A { public string Id {get; set;} public List<B> BList {get; set;} } public class B { public string Id {get; set;} [ForeignKey("CObj")] public string CId {get; set;} public C CObj {get; set;} public List<A> AList {get; set;} } public class C { public string Id {get; set;} public string Desc {get; set;} }
在查询时 我使用如下linq
using(var db = new MyContext()) { var linq = db.Set<A>().Include(e=>e.BList).Where(e=>e.Id == "exampleId").FirstOrDefault(); }
得到的实例A中的BList有内容,但是BList所有B实例的C属性是null。有没有办法能够把C对象也包含进来?有的话linq要怎么写?
何必这么累,用用Moon.Orm
没办法啊,领导要求用ef的codefirst
public virtual C CObj {get; set;} 延迟加载 试下
延迟加载关掉了,延迟加载对于cs来说没啥用。。。
@被打包托运的胖胖: 延迟加载对于cs来说没啥用。。 不太理解 ,能不能给解释下?
@黑峰: 延迟加载直白点说的话是在ToList()的时候去查询数据。当client调用服务时,服务需要马上把数据查出来,然后返回给client。因此client和服务可以说是即查即用的。
@被打包托运的胖胖: 感觉咱们理解的不一样,我的理解是延迟加载在你用到此数据的时候会自动再去查询数据,跟ToList()没啥关系,当服务用到此数据的时候会自动再次去查询导航属性。你可以试一下,别禁用延迟加载 看能否调出C属性
因为你没有加载B 类型的C属性值额,
我知道没有include B类型的C属性值。不知道怎么写...orz