Я хочу, чтобы при получении базового класса я получал все строки в таблице без учета дискриминатора. Я хочу использовать дискриминатор только при получении одного из производных классов. Как я могу выполнить sh это?
Первое, что я попробовал, было установить только HasValue для производных классов, но не базовый класс, как этот ...
modelBuilder.Entity<BaseClass>(entity =>
{
entity.HasDiscriminator(e => e.DiscriminatorProperty)
// .HasValue<BaseClass>()
.HasValue<DerivedClass1>(1)
.HasValue<DerivedClass2>(2);
});
. ... но это дает мне следующую ошибку:
Исключение типа 'System.InvalidOperationException' произошло в System.Private.CoreLib.dll, но не было обработано в коде пользователя: 'Тип сущности' BaseClass 'является частью иерархии, но не имеет настроенного значения дискриминатора.'
Еще одна вещь, которую я пытался настроить, - настроить BaseClass для каждого возможного значения дискриминатора, например: ...
modelBuilder.Entity<BaseClass>(entity =>
{
entity.HasDiscriminator(e => e.DiscriminatorProperty)
.HasValue<BaseClass>(1)
.HasValue<BaseClass>(2)
.HasValue<DerivedClass1>(1)
.HasValue<DerivedClass2>(2);
});
... но при попытке получить базовый класс я получал только записи со значением дискриминатора, равным 1. Казалось, что EF Core распознает только первую конфигурацию и игнорирует следующую.
Итак мой вопрос, как я могу настроить дискриминатор специально для производных классов, но не для базового класса? Другими словами, при получении базового класса я должен получить все записи в таблице.