Ответ 1
Вы можете сопоставить частные свойства в EF-кодах. Здесь хорошее описание, как это сделать. В вашем случае речь идет о отображении Subscriber._subscribedList
. То, что вы не можете сделать, это это (в контексте переопределения OnModelCreating
):
modelBuilder.Entity<Subscriber>().HasMany(x => x._subscribedList);
Он не будет компилироваться, потому что _subscribedList
является закрытым.
Что вы можете сделать, это создать класс вложенных сопоставлений в Subscriber
:
public class Subscriber : IEntity
{
...
private ICollection<HelpChannel> _subscribedList { get; set; } // ICollection!
public class SubscriberMapper : EntityTypeConfiguration<Subscriber>
{
public SubscriberMapper()
{
HasMany(s => s._subscribedList);
}
}
}
и OnModelCreating
:
modelBuilder.Configurations.Add(new Subscriber.SubscriberMapping());
Возможно, вы захотите сделать _subscribedList
protected virtual, чтобы позволить ленивую загрузку. Но даже можно сделать загрузку с Include
:
context.Subscribers.Include("_subscribedList");