首页 > 解决方案 > 在 DbContext 中创建模型后添加实体类型

问题描述

我正在使用 EF Core 2,并且正在尝试将实体动态添加到模型中。场景是:

  1. 用户在 Web 应用程序中创建具有自定义属性的实体

  2. 我在运行时创建了一个映射此实体的类(请参阅如何在 .NET Core 中发出类型

  3. OnModelCreating我在 db 上下文的方法中将创建的类添加到模型中(参见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方法。

标签: c#entity-frameworkdependency-injectionentity-framework-core

解决方案


您还需要一个新的 DbContext 子类型,因为 OnModelCreating 每个 AppDomain 的每个 DbContext 类型只运行一次。


推荐阅读