EF6 kullanıyorum ve bir nesnenin tüm yapısını almaya hevesli olmaya çalışıyorum. Sorun şu ki miras kullanıyorum.EF Eager türetilen sınıf getiriliyor
Bu derslere sahip olduğumu söyleyelim.
DBContext
DbSet<A> A { get; set; }
Örnek sınıfları
public class A
{
public string Id { get; set; }
public IList<Base> Bases { get; set; }
}
public abstract class Base
{
public int Id { get; set; }
public string Name { get; set; }
}
public abstract class Base1 : Base
{
public SomeClass SomeClass { get; set; }
}
public class Base2 : Base1
{
}
public class Base3 : Base1
{
public SomeOtherClass SomeOtherClass { get; set; }
}
i almak hatadır:
The Include path expression must refer to a navigation property defined on the type.
Use dotted paths for reference navigation properties and the Select operator for collection navigation properties.
neden aşağıdaki çalışmak gelmiyor.Fark?
public IEnumerable<A> GetAll(string id)
{
return _ctx.A
.Include(x => x.Bases.OfType<Base1>().Select(y=>y.SomeClass))
.Where(x => x.Id.Equals(id)).ToList();
}
Yeni örnek
public IEnumerable<A> GetAll(string id)
{
var lists = _dbContext.A.Where(x => x.Id == id);
lists.SelectMany(a => a.Bases).OfType<Base1>().Include(e=>e.SomeClass).Load();
lists.SelectMany(b => b.Bases).OfType<Base3>().Include(e => e.SomeOtherClass).Load();
return lists;
}
DÜZENLEME: iş gibi görünüyor yeni bir örnek eklendi.
Eğer 'dahil eder ("SomeOtherClass")' kullanılarak denedi yardımcı olacaktır
Umut? –
Someclass başka bir kuruluştur. SomeClass henüz – Henrik
çalışmadığı için SomeOtherClass denedim, bu 'Include (" SomeClass ")' ı denediniz demektir ve işe yaramaz mı? –