我的场景有点奇怪,我有一个实体列表,比如说我在列表中有十个项目,它们将转到三个不同的表,彼此关联。我正在使用 Linq 2 Sql,我需要将它插入一次点击而不是多次迭代。
这可能吗。我听说,在 BLtoolkit 中有一个 InsertBatch() 方法可以执行批量插入。L2S 中的任何类似内容。
我的场景有点奇怪,我有一个实体列表,比如说我在列表中有十个项目,它们将转到三个不同的表,彼此关联。我正在使用 Linq 2 Sql,我需要将它插入一次点击而不是多次迭代。
这可能吗。我听说,在 BLtoolkit 中有一个 InsertBatch() 方法可以执行批量插入。L2S 中的任何类似内容。
有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。