我的场景有点奇怪,我有一个实体列表,假设列表中有10个项目,它们将进入三个不同的表,相互关联。我使用Linq 2 Sql,我需要插入它在一个单一的命中,而不是多次迭代。
这可能吗?我听说,在BLtoolkit中有InsertBatch()方法执行批量插入。
有InsertAllOnSubmit
。使用Linq To SQL,您只需设置要为更新更改的属性。然后拨打SubmitChanges
将为您完成其余的工作。
总之:不,不可能。
InsertAllOnSubmit基本上只是每次调用InsertOnSubmit。所以这并没有多大帮助。
如果您对生成的SQL进行概要分析,您将看到您将获得许多单独的插入语句,从而导致大量开销。无论使用InsertOnSumbit还是InsertAllOnSumbit
如果你谷歌一下,你会看到一些尝试添加SqlBulkCopy行为到Linq-2-sql。例如:http://blogs.microsoft.co.il/blogs/aviwortzel/archive/2008/05/06/implementing-sqlbulkcopy-in-linq-to-sql.aspx
然而,我认为你可能会更好地实现SqlBulkCopy自己的批处理作业