Linq 2 Sql 中可以批量插入吗?

发布于 2024-12-02 08:00:27 字数 162 浏览 0 评论 0原文

我的场景有点奇怪,我有一个实体列表,假设列表中有十个项目,它们将进入三个不同的表,彼此关联。我正在使用 Linq 2 Sql,我需要将其插入一次而不是多次迭代中。

这可能吗。我听说,在 BLtoolkit 中有一个 InsertBatch() 方法可以执行批量插入。 L2S 中的任何类似内容。

My scenario is little bit wierd, I have a list of entities, say i have ten items in list which will go to three different tables , associated to each other. I am using Linq 2 Sql and I need to insert it in a single hit instead of multiple iterations.

Is this possible. I have heard, in BLtoolkit there is InsertBatch() method that performs a bulk insert. Anything similar in L2S.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

浅听莫相离 2024-12-09 08:00:27

InsertAllOnSubmit。使用 Linq To SQL,您只需设置要更改更新的属性。然后调用 SubmitChanges 将为您完成剩下的工作。

There is InsertAllOnSubmit. With Linq To SQL, you just set the properties you want to change for an update. Then calling SubmitChanges will do the rest for you..

々眼睛长脚气 2024-12-09 08:00:27

简而言之:不,这是不可能的。

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 可能会更好。

In short: No, it is not possible.

InsertAllOnSubmit is basically just calling InsertOnSubmit each time. So that does not help a lot.

If you profile the generated SQL, you will see that you will get a lot of individual insert statements resulting in a lot of overhead. Regardless of using InsertOnSumbit or InsertAllOnSumbit.

If you google around, you will see some attempts to add SqlBulkCopy behaviour to Linq-2-sql. For example: http://blogs.microsoft.co.il/blogs/aviwortzel/archive/2008/05/06/implementing-sqlbulkcopy-in-linq-to-sql.aspx

However, I think you might be better of implementing SqlBulkCopy yourself for your batch jobs.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文