Настройте EF Fluent API для 1-ко-многим, но дважды - PullRequest
0 голосов
/ 29 мая 2018

У меня есть следующая модель.

public class Holder
{
  ...
  public List<Thing> Future { get;set; }
  public List<Thing> Past { get;set; }
}

public class Thing 
{
  ...
  public Holder Holder { get; set; }
}

Теперь я пытаюсь использовать Fluent API, чтобы сообщить БД, что у каждого Держателя может быть только много вещей в будущем, а также много вещей в прошлом.,Вещь может быть только будущим или прошлым, но не обоими, поэтому вещь относится только к одному держателю, но у держателя может быть несколько вещей (распределенных между двумя массивами).

Лучшим из моего опыта былок следующему.

private static void OnModelCreating(EntityTypeBuilder<Thing> entity)
{
  ...
  entity.HasOne(_ => _.Holder).WithMany(_ => _.Future);
  entity.HasOne(_ => _.Holder).WithMany(_ => _.Past);
}

Однако, когда я пытаюсь создать миграцию, EF жалуется на это следующим образом.

Невозможно создать связь между 'Holder.Future' иThing.Holder, потому что между Holder.Past и Thing.Holder уже есть отношения.Навигационные свойства могут участвовать только в одном отношении.

Я не уверен, как решить это правильно и правильно .Единственный способ обойти меня - объявить класс FutureThing и PastThing , эффективно дублирующий исходный код.Это некрасиво и плохо.

Это немного необычный сценарий, и все поиски в Google приводят к тому, как настроить более простые отношения.Я использую Core 2, и я ожидаю, что есть что-то, что облегчает этот сценарий.

Как мне здесь понять?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...