实体框架6代码优先触发器

Cha*_*s W 23 c# sql entity-framework entity-framework-6

我正在使用Entity Framework 6 Code First,并且想要创建一个Trigger.

我该怎么做呢?

我需要触发器的原因是因为用户可能直接编辑数据库或通过我正在编写的程序编辑数据库,我需要确保表中的2列不是空的,并且都不是空的.

我一直在寻找,找不到办法.

有没有办法先使用代码指定触发器?

Eri*_*sch 22

实体框架不支持触发器,尽管您当然可以手动执行将创建触发器的语句,但是您需要在创建表之后执行此操作(如果使用迁移).

您可以在EF 4.1代码中使用Ladislav指定的技术- 首先向表中添加触发器

请注意他的警告,但EF不会知道触发器中的任何更改.如果您的意图仅仅是确保表中的2列不为空,那么您最好使用约束(EF不支持约束,但您可以手动添加它们).


Nic*_*pat 15

看看我的库EntityFramework.Triggers.它适用于Entity Framework层,因此如果有人直接修改数据库,则不会触发触发器事件.NuGet链接是https://www.nuget.org/packages/EntityFramework.Triggers/

  • 如果您已经阅读了这个问题,那么他会看到他想在数据库上触发,因为数据库可以直接修改.你的`触发器'根本不是真正的触发器,只是当前由DbContext跟踪的实体上的事件.考虑到DbContext的生命应该是非常短暂的,我真的没有看到这一点. (8认同)

use*_*006 5

添加迁移后,打开迁移文件并创建触发器,如下所示

注意:您需要运行update-database以查看数据库中的更改。

在此处输入图片说明