Dmi*_*tri 17 entity-framework-4.1
将触发器添加到使用EF 4.1的代码优先方法创建的表的最佳方法是什么?
我正在考虑的一种方法是在OnModelCreating中或在初始化Db上下文时执行自定义SQL查询.
有更好的主意吗?
Lad*_*nka 19
CREATE TRIGGER如果您希望EF为您创建触发器(类似此处的类似代码),则使用将执行SQL命令的自定义初始化程序是唯一的选项.另外不要忘记SET NOCOUNT ON在触发代码的开头包含.
但是存在与触发器逻辑相关的更复杂的问题.如果您想要修改传递给数据库的数据的触发器,您必须了解触发器所做的更改不会反映在您当前的上下文中.Context仍然只知道您传递给数据库的数据的实体.这通常通过设置触发器修改的属性来解决,如DatabaseGeneratedOption.Computed更新或DatabaseGeneratedOption.Identity插入.在这种情况下,您无法修改应用程序中的属性,必须在数据库中修改它们.EF将确保在修改后选择这些属性并将其传递给实体.问题是这不适用于代码优先.
我不完全确定你的意思。如果您想要在表上有一个实际的 SQL 触发器,那么我会像平常一样在 SQL 中创建触发器。如果您的意思是您希望在修改其中一个实体集时在代码中进行某种处理/更新,那么我认为您需要执行一种自定义方法,每当该实体集更新时都会调用该方法。
| 归档时间: |
|
| 查看次数: |
18515 次 |
| 最近记录: |