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