У меня есть следующая модель.
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, и я ожидаю, что есть что-то, что облегчает этот сценарий.
Как мне здесь понять?