c# - 在 DbContext 中创建模型后添加实体类型
问题描述
我正在使用 EF Core 2,并且正在尝试将实体动态添加到模型中。场景是:
用户在 Web 应用程序中创建具有自定义属性的实体
我在运行时创建了一个映射此实体的类(请参阅如何在 .NET Core 中发出类型)
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
方法。
解决方案
您还需要一个新的 DbContext 子类型,因为 OnModelCreating 每个 AppDomain 的每个 DbContext 类型只运行一次。
推荐阅读
- redux-saga - yield 和 yield put() 函数的区别
- html - 为什么 CSS Grid 的自动填充属性在列方向上不起作用
- csv - 使用 Ansible 更新 csv 文件
- robotframework - 拖放关键字似乎在 Selenium2Library 中不起作用?
- sql - 如何在sql server中检查和更改自定义字符串
- azure - 下载我的 Bot 源代码后,如何在本地运行 Microsoft Web App Bot?
- python - 如何将密钥发送到隐藏的密码框
- javascript - 如何将 http:// 替换为 Tel:
- javascript - 如何替换 css 类内容?
- java - Primefaces 对话框在网页中将标题和内容显示为文本