Вскоре
номер
Эта функциональность не является родной для EF, и это вопрос, если будет.
Но ... ты можешь сделать это сам.
Вы можете создать свой собственный репозиторий для этих объектов. Внутренне, он использует EF в качестве источника данных, и вам придется делать все сопоставления самостоятельно.
Возможно, вам придется создать собственную реализацию отслеживания изменений для правильной функциональности обновления.
Второй подход может заключаться в упаковке всей сущности в поле JSON и использовании EF в качестве простого источника данных. Тогда вы можете извлечь свои сущности с помощью чего-то подобного ...:
var data = DbContext.MyPolymorphData
.Select(x => JsonConvert.Deserialize<IPolyEntity>(x.JsonField))
.ToList();
.. используя пакет Json.NET, который позволяет сохранять объектный тип в JSON вместе с объектными данными и десериализовать его соответственно.
Но с обновлением все равно будет PITA - после обновления вы должны сериализовать данные обратно в материнскую сущность и позволить EF решить, изменилось ли что-нибудь.
Тьфу.
Во всяком случае. Хранение упакованных JSON-сущностей в реляционной БД вынуждает вас поддерживать совместимость с вашей моделью сущностей. Когда вы изменяете свойства сущностей, они ломаются, если вам не удалось каким-либо образом обновить все JSON, запеченные в БД.
Если у вас есть возможность, избегайте ее.