У меня есть две сущности: Parent
и Child
; каждый родитель может иметь не более двух дочерних ссылок. Я настроил свои объекты следующим образом:
class Parent
{
[Key]
public int ParentId { get; set; }
public int PrimaryChildId{ get; set; }
public Child PrimaryChild { get; set; }
public int SecondaryChildId { get; set; }
public Child? SecondaryChild { get; set; }
// remaining properties
}
class Child
{
[Key]
public int ChildId { get; set; }
public int ParentId { get; set; }
public Parent Parent {get; set; }
// remaining child properties
}
В DbContext.OnModelCreating
у меня такой код:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Parent>(builder =>
{
builder.HasOne(p => p.PrimaryChild);
builder.HasOne(p => p.SecondaryChild);
});
}
Этого недостаточно для достижения того, чего я пытаюсь достичь здесь. Я получаю сообщение об ошибке:
Невозможно определить взаимосвязь, представленную свойством навигации «Child.Parent» типа «Parent». Либо настройте связь вручную, либо проигнорируйте это свойство с помощью атрибута «[NotMapped]» или с помощью EntityTypeBuilder.Ignore в «OnModelCreating»
Я пытался установить связь из объекта Child
, но получаю разные ошибки, потому что это заставляет меня устанавливать две связи для одного и того же свойства. Я не хочу, чтобы у моего ребенка было два свойства навигации, если я знаю, что одновременно будет использоваться только одно, поскольку это может сбить с толку модель.
Я немного искал в Интернете, но мне не удалось найти отношения, которые установлены таким образом.
PrimaryChild
, чтобы получить первого потомка в коллекции или что-то подобное. - person chadnt   schedule 12.02.2020