Я пытаюсь создать свойство навигации в EF Core, которое установило бы его ссылку условно на основе значений двух свойств.Я не уверен, возможно ли это вообще.
Позвольте мне показать вам пример: допустим, у меня есть иерархическая структура сущностей, таких как Country
, State
, County
и City
.У меня также есть объект с именем Law
, который может быть «принадлежащим» любому из иерархических объектов.
Итак, я создаю перечисление:
public enum OwnerType
{
Country,
State,
County,
City
}
... и класс Law
:
public class Law
{
public int Id { get; set; }
public OwnerType OwnerType { get; set; }
public int OwnerId { get; set; }
}
Теперь я хочу настроить Law
класс, чтобы иметь свойство навигации, которое связывало бы OwnerId
с первичным ключом соответствующего объекта на основе значения OwnerType
.
Я подумал добавить его в класс Law
:
public virtual object Owner { get; set; }
Или для создания IOwner
интерфейса, который будет реализовывать каждая из иерархических сущностей, а затем я добавлю это вместо этого:
public virtual IOwner Owner { get; set; }
Но тогда я понятия не имею, как настроить EntityTypeConfiguration
с EntityTypeBuilder
.Это, очевидно, не сработает:
builder.HasOne(x => x.Owner).WithMany(x => x.Laws).HasForeignKey(x => x.OwnerId);
Я просто не знаю, как выполнить то, что я пытаюсь сделать здесь.Есть идеи?