Aşağıdaki sınıf yapısı verildiğindeiç içe tph devralınan üyenin ef-core yük toplama özelliği
public class Parent
{
public Guid Id { get;
public List<BaseChild> Children { get; set; }
}
public abstract class BaseChild
{
public int Id { get; set; }
public string ChildName { get; set; }
}
public class NormalChild : BaseChild
{
public DateTime BirthDate { get; set; }
}
public class RichChild : BaseChild
{
public List<OffshoreAccount> OffshoreAccounts { get; set; }
}
public class OffshoreAccount
{
public string AccountNumber { get; set; }
public AccountInfo AccountInfo { get; set; }
}
Ebeveyn verilerini çocuklara ait offshore hesapları hakkında bilgi içerecek şekilde sorgulamanın en iyi yolu nedir? Ef-core'ın açık yüklemesini kullanarak aşağıdaki çözümden geldim, ancak doğru hissetmiyor. Daha şık bir çözüm var mı?
var parent = Context.Set<Parent>()
.Where(o => o.Id == Guid.Parse(parentId))
.Include(o => o.Children)
.SingleOrDefault();
foreach (var child in parent.Children.OfType<RichChild>())
{
Context.Entry<RichChild>(child).Collection(f => f.OffshoreAccounts).Load();
foreach (var account in child.OffshoreAccounts)
{
Context.Entry<OffshoreAccount>(account).Reference(f => f.AccountInfo).Load();
}
}
Lütfen lütfen childs'ı 'children' olarak yeniden adlandırın. –
'AccountInfo' nedir? –
İlgili varlıkların yüklenmesi için kod ek yükünden kaçınmak için EF'in bu işi EF tembel yükleme veya istekli yüklemeyi etkinleştirerek yapmasına izin vermelisiniz. Daha fazla bilgi için buraya bakın: https://msdn.microsoft.com/en-us/library/jj574232(v=vs.113).aspx – Felix