2016-04-13 20 views
11

, ben bu varlıklara sahip varlık Framework çekirdek koleksiyonunu dahil? İşteÖrneğin

ben bu yapmaya çalışıyorum nasıl:

using (var dbContext = new BookContext()) 
{ 
    var bookPages = dbContext 
     .Book 
     .Include(x => x.Pages) 
     .ThenInclude(x => x.Select(y => y.PageTitle)) 
     .SingleOrDefault(x => x.BookId == "some example id") 
     .Pages 
     .Select(x => x.PageTitle) 
     .ToList(); 
} 

Ama sorun o istisna

ArgumentException olmasındandır: => {Sayfa x özellikleri ifadesini' y x seçiminde [y] .PageTitle} 'geçerli değil. İfade, bir mülkiyet erişimini temsil etmelidir: 't => t.MyProperty'. Birden çok özellikleri belirtilirken anonim bir tür kullanın: 't => yeni {t.MyProperty1, t.MyProperty2}'. Parametre adı: propertyAccessExpression

Neyin var, tam olarak ne yapmalıyım?

cevap

27

deneyin ThenInclude doğrudan PageTitle erişen: Bu işler ne kadar

using (var dbContext = new BookContext()) 
{ 
    var bookPages = dbContext 
    .Book 
    .Include(x => x.Pages) 
    .ThenInclude(y => y.PageTitle) 
    .SingleOrDefault(x => x.BookId == "some example id") 
    .Select(x => x.Pages) 
    .Select(x => x.PageTitle) 
    .ToList(); 
} 
+9

? Demek istediğim, y.PageTitle yazdığımda PageTitle ile Intellisense alanım yok, ama işe yarıyor! –

+1

https://github.com/dotnet/roslyn/issues/8237 adresine bakın. – Smit