C# EntityFramework BulkInsert扩展和触发器?

C# EntityFramework BulkInsert扩展和触发器?,c#,entity-framework,triggers,C#,Entity Framework,Triggers,我正在使用EntityFramework将大型数据集插入数据库。但是,在我插入数据的表上有一个AFTER INSERT触发器,它似乎没有触发。这是扩展的一个限制,还是有办法确保在操作完成时触发触发器?结果证明我只是看得不够仔细。mainBulkInsert方法有一些重载没有在文档中列出,我无法通过任何Google搜索找到它们,但其中一个重载允许使用标志。其中一个标志是SqlBulkCopyOptions.FireTriggers 它的用法类似于:context.BulkInsert(值,SqlB

我正在使用EntityFramework将大型数据集插入数据库。但是,在我插入数据的表上有一个
AFTER INSERT
触发器,它似乎没有触发。这是扩展的一个限制,还是有办法确保在操作完成时触发触发器?

结果证明我只是看得不够仔细。main
BulkInsert
方法有一些重载没有在文档中列出,我无法通过任何Google搜索找到它们,但其中一个重载允许使用标志。其中一个标志是
SqlBulkCopyOptions.FireTriggers

它的用法类似于:
context.BulkInsert(值,SqlBulkCopyOptions.FireTriggers)
。使用此方法,触发器会单独处理每一行,并且一切都会正常工作

编辑:回答评论

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

当您添加一些检查(例如值必须介于
10
50
之间)时,会出现一个约束,以使其有效并插入

因此,如果不检查约束,即使超出范围,
5
的值也将毫无问题地插入。如果选中约束,将抛出一个错误:

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.
以下是一个在线示例:

这就是为什么我推荐
SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints


如果桌子上有一个触发器,你可能会在什么时候触发它们。如果列有约束,如果该值在检查中无效,您可能希望该操作抛出错误。

结果表明,我只是看得不够仔细。main
BulkInsert
方法有一些重载没有在文档中列出,我无法通过任何Google搜索找到它们,但其中一个重载允许使用标志。其中一个标志是
SqlBulkCopyOptions.FireTriggers

它的用法类似于:
context.BulkInsert(值,SqlBulkCopyOptions.FireTriggers)
。使用此方法,触发器会单独处理每一行,并且一切都会正常工作

编辑:回答评论

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

当您添加一些检查(例如值必须介于
10
50
之间)时,会出现一个约束,以使其有效并插入

因此,如果不检查约束,即使超出范围,
5
的值也将毫无问题地插入。如果选中约束,将抛出一个错误:

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.
以下是一个在线示例:

这就是为什么我推荐
SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints


如果桌子上有一个触发器,你可能会在什么时候触发它们。如果列具有约束,则如果值与检查无效,您可能希望操作引发错误。

您使用的是什么数据库?我使用的是SQL Server 2012您使用的是什么数据库?我使用的是SQL Server 2012我建议您也添加CheckConstraint(SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints)@JonathanMagnan,你能解释一下CheckConstraint会做什么吗?我建议你也添加CheckConstraint(SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.CheckConstraints)@JonathanMagnan,你能解释一下CheckConstraint会做什么吗?