2013-02-20 17 views
5

Tamam, this page uyarınca, Entity Framework Include yönteminde Select kullanarak istekli olarak birden çok düzey yüklemelidir. include "ifadesinin geçersiz tip" ikinci çağrı -Entity Framework İstemcisi Birden Fazla Düzeyde İstisna Yükleme İstenmeyen

var reports = _context.Reports 
    .Include(rt => rt.Fields) 
    .Include(rt => rt.Fields.Select(f => f.FieldType)) 
    .Include(rt => rt.Fields.Select(f => f.FieldType.FieldIdentifier)); 

Ancak bu bir InvalidOperationException atar:

Aşağıdaki kod var. İstisna EntityFrameworkHelper.CollectRelationalMemebers'dan geliyor.

Ayrıca Include ile ilgili özellikleri için dizeleri kullanmayı denedim, ancak bu da başarısız oldu (Ben de mümkün ise dizeleri kullanmaktan kaçınmayı tercih ediyorum).

.NET 4.0 için EF 5.0 DLL kullanıyorum. EF sınıflarım eski moda bir veritabanıdır - ilk önce EntityObject s.

Nedenini bilen var mı ve bu istisna hakkında yapabileceğim bir şey var mı?

DÜZENLEME:

dize sürümünü kullanarak:

var reports = _context.Reports 
    .Include("Fields") 
    .Include("Fields.FieldType") 
    .Include("Fields.FieldType.FieldIdentifier")); 

O InvalidOperationException atar - İfade geçersiz tür.

+0

"Include" in dize tabanlı sürümünü kullandığınızda tam istisna mesajı nedir? – Slauma

+0

Yukarıdaki cevaba bakınız. – MgSam

+0

"Include" in ** string ** tabanlı sürümü için istisna kastediyorum. – Slauma

cevap

0

konu kullanacağımız vardı bir DLL 3. parti Include uzatma yöntemi Varlık Framework'ün Include göre öncelik alma olduğunu olarak sona erdi. Üçüncü taraf, istisnaları fırlatıyordu. Çıkardıktan sonra sorun çözüldü. uzatma yöntemleri ile sorunların

biri ... yardım herkes için

teşekkürler.

19

İçeriğinde fazlalık var. Yalnızca bu yoldaki herhangi bir şeyi içerecek son içeriğe ihtiyacınız var. Örnek:

var reports = _context.Reports 
    .Include(rt => rt.Fields.Select(f => f.FieldType.FieldIdentifier));