Entity Framework Include() is not working within complex query

后端 未结 4 647
-上瘾入骨i
-上瘾入骨i 2020-12-03 15:11

Consider following LINQ query:

var item = (from obj in _db.SampleEntity.Include(s => s.NavProp1)
           select new
           {
                ItemPr         


        
4条回答
  •  死守一世寂寞
    2020-12-03 15:57

    How did you find that item.ItemProp1.NavProp1 is null. EF uses proxies to load all required properties when you try to access it.

    What about

    var item = (from obj in _db.SampleEntity.Include(s => s.NavProp1)
       select obj).SingleOrDefault();
    
    Assert.IsNotNull(obj.NavProp1);
    Assert.IsNotNull(obj.NavProp2);
    

    You can also try with

    var item = (from obj in _db.SampleEntity.Include(s => s.NavProp1)
       select new
       {
            ItemProp1 = obj,
            NavProp1 = obj.NavProp1,
            ItemProp2 = obj.NavProp2.Any(n => n.Active)
       }).SingleOrDefault();
    
    Assert.IsNotNull(item.NavProp1)
    

    Of course I assume that you don't have any problems with EF navigation property mappings.

提交回复
热议问题