2016-03-25 22 views
1

boş:ben şöyle bir veritabanı modeli var

  1. Şikayetler (T1)
  2. MonitoringComplaints (T2)
  3. İzleme Notlar (T3)

Her Sınıfım için aşağıdaki gibi görünüyor:

class Complaints{ 
//props 

    public virtual ICollection<MONITORING> MONITORINGs { get; set; } 
} 


class Monitoring{ 
//props 

    public virtual ICollection<MonitoringNotes> MONITORINGNotes { get; set; } 
} 

class MonitoringNotes{ 

//props 

} 

Bütün feryat olarak almak için depoyu çalıştırdığınızda Ben bütün veri almak

public IEnumerable<Complaints> GetAll() 
    { 

     try 
     { 
      return _context.Complaints 

       .Include(t => t.MONITORINGs) 
       .OrderBy(t => t.FileNum) 
       .ToList(); 
     } 
     catch (Exception ex) 
     { 
      _logger.LogError("Could not get complaint with checklist", ex); 
      return null; 
     } 
    } 

ama seçme ile izlenmesi notlar ekleyebilir, bunun null döndürür:

public IEnumerable<Complaints> GetAll() 
    { 

     try 
     { 
      return _context.Complaints 

       .Include(t => t.MONITORINGs.Select(t3=>t3.MONITORINGNotes) 
       .OrderBy(t => t.FileNum) 
       .ToList(); 
     } 
     catch (Exception ex) 
     { 
      _logger.LogError("Could not get complaint with checklist", ex); 
      return null; 
     } 
    } 

Ayrıca zaman Ben yazıyorum, notlar için Intellisense alırım, bu yüzden benim kendi varlıklarını düşünmüyorum. Seçme ifadesini doğru kullanıyorum, birisi beni doğru yöne yönlendirebilir mi? Bu çözümü 3. seviye ilişkileri de dahil olmak üzere sorulan soruların çoğunda kullandım: Entity Framework - Include Multiple Levels of Properties.

+0

"Monitoring" zaten herhangi bir "MonitoringNotes" var mı? Çünkü herhangi bir öğe olmadığında, özellik boş olacaktır. Sadece kontrol ediyor ... – Chris

+0

@Chris Kontrol ettiğiniz için teşekkür ederim. Öyle. Şikayetlerden bazılarının izleme verileri yoktur, ancak şikayetler hala ortaya çıkmaktadır. Select deyimini ekledikten sonra, yalnızca null değerini döndürür. – epv

+0

Kod çalıştırdım ve beklendiği gibi çalıştı. Ve btw bir ')' '.Include sonunda eksik' hattını (.. (Seç) bulunmaktadır. Eğer ilişkiler için herhangi bir özel EF yapılandırma var mı? I (Kongre tarafından) hiçbir yapılandırma ile koştu. – Chris

cevap

1

sonra benim sorun çözüldü içerir kullanma.

public IEnumerable<Complaints> GetAll() 
{ 

    try 
    { 
     return _context.Complaints 

      .Include(t => t.MONITORINGs) 
        .ThenInclude(t3=>t3.MONITORINGNotes) 
      .OrderBy(t => t.FileNum) 
      .ToList(); 
    } 
    catch (Exception ex) 
    { 
     _logger.LogError("Could not get complaint with checklist", ex); 
     return null; 
    } 
}