首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EntityFramework BulkInsert扩展和触发器?

EntityFramework BulkInsert扩展和触发器?
EN

Stack Overflow用户
提问于 2016-02-02 16:15:44
回答 1查看 1.3K关注 0票数 0

我使用EntityFramework BulkInsert扩展将大型数据集插入到数据库中。但是,在表中有一个AFTER INSERT触发器,我要将数据插入到该触发器中,这似乎并不会触发。这是扩展的一个限制,还是有一种方法来确保触发器在操作完成时触发?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-02 18:00:23

结果发现我只是找得不够仔细。在文档中没有列出主BulkInsert方法的一些重载,我无法通过任何谷歌搜索找到它们,但是其中一个重载允许标记。其中一个标志是SqlBulkCopyOptions.FireTriggers

它的用法如下:context.BulkInsert(values, SqlBulkCopyOptions.FireTriggers)。使用此方法,每一行都由触发器单独处理,一切都按其应有的方式工作。

编辑:答案评论

你能解释一下CheckConstraint会做什么吗?

约束是当您添加一些检查时(如1050之间的值必须是有效的和插入的)。

因此,如果不检查约束,即使超出范围,也会插入5值,而不会出现问题。如果检查约束,将抛出一个错误:

代码语言:javascript
复制
The INSERT statement conflicted with the CHECK constraint "CHK_ColumnWithConstraint". The conflict occurred in database "db_2560", table "dbo.Customers", column 'ColumnWithConstraint'.
The statement has been terminated.

下面是一个在线示例:https://dotnetfiddle.net/AMgTYQ

这就是我推荐SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints的原因

如果表中有触发器,那么您可能在什么时候启动它们。如果列具有约束,则如果该值在检查中无效,则可能希望该操作抛出错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35158447

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档