Добавить типы объектов после создания модели в DbContext - PullRequest
0 голосов
/ 10 мая 2018

Я использую EF Core 2 и пытаюсь динамически добавить объект в модель. Сценарий:

  1. Пользователь создает объект с настраиваемыми свойствами в веб-приложении

  2. Я создаю во время выполнения класс, который отображает эту сущность (см. Как создать Type в .NET Core )

  3. Я добавляю созданный класс в модель в методе OnModelCreating контекста БД (см. https://romiller.com/2012/03/26/dynamically-building-a-model-with-code-first/)

Все работает, кроме случаев, когда я хочу записать в БД новый экземпляр вновь созданного класса в том же запросе (вызов API), где я создал новую сущность.

Это потому, что DbContext ограничен запросом (не кратковременным), поэтому DbContext вызвал метод OnModelCreating, прежде чем я смог создать новую сущность.

Это ошибка, которую я получаю:

The entity type 'People' was not found. 
Ensure that the entity type has been added to the model.

Есть предложения о том, как этого добиться? Я не думаю, что можно вызвать OnModelCreating по требованию, и я не могу найти способ доступа к ModelBuilder контекста, чтобы вызвать его Entity метод.

1 Ответ

0 голосов
/ 10 мая 2018

Вам также понадобится новый подтип DbContext, поскольку OnModelCreating запускается только один раз для каждого типа DbContext на домен приложения.

...