Я пытаюсь использовать «таблицу на иерархию» для моделирования различных типов учетных записей в моей базе данных с использованием EF Core (2.1), и у меня возникает проблема, связанная с добавлением дополнительных столбцов внешнего ключа для производных типов.Я видел этот вопрос / ответ, но я не думаю, что это так же, как моя ситуация.
Вот мои классы аккаунта:
public abstract class Base
{
[Key]
public int Id { get; set; }
}
public class Standard : Base
{
public int ParentId { get; set; }
[ForeignKey(nameof(ParentId))]
public Elevated Parent { get; set; }
}
public abstract class Elevated : Base
{
public ICollection<Base> Accounts { get; set; } = new List<Base>();
}
public class Plus : Elevated
{
}
public class Ultimate : Elevated
{
}
И яЯ настроил TPH следующим образом в моем конструкторе DbContext:
builder.Entity<Base>()
.HasDiscriminator<string>("Type")
.HasValue<Ultimate>("ultimate")
.HasValue<Plus>("plus")
.HasValue<Standard>("standard");
, и я заполняю некоторые базовые данные, такие как:
builder.Entity<Ultimate>().HasData(new Ultimate() { Id = 1 });
builder.Entity<Plus>().HasData(new Plus() { Id = 2 });
builder.Entity<Standard>().HasData(new Standard() { Id = 3, ParentId = 1 });
, когда я затем запускаю миграции, я получаю эту таблицу:

с этими данными:

Как вы можете видеть, у меня естьElevatedId
столбец, который мне не нужен.Если я удаляю коллекцию Accounts
из класса Elevated
, я не получаю этот столбец;но мне нужно / хочу это свойство навигации.
Что-то, что я должен делать по-другому?