LINQ-To-Sql 更新 - 性能问题

发布于 2024-10-21 04:22:55 字数 206 浏览 3 评论 0原文

我有一个包含 230 列和 1200 万行的表。

我需要更新每行的 123 个字段。

如果我尝试使用 LINQ-To-Sql 执行此操作,则会出现 System.OutOfMemory 异常。

我知道如果禁用对象跟踪,我不会收到 OutofMemory 错误。 但我认为如果禁用对象跟踪,我将无法执行更新。

更新它们的最佳方法是什么?

I have a table which includes 230 columns and 12 million rows.

I need to update 123 fields of EACH row.

If I try to do it with LINQ-To-Sql, I get System.OutOfMemory Exception.

I know I don't get OutofMemory error if I disable object tracking.
But I think I cannot perform updates if I disable object tracking.

What is the best way to update them?

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

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

发布评论

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

评论(2

洋洋洒洒 2024-10-28 04:22:55

这不是一个适合 LINQ-to-SQL 的任务,或者坦率地说任何 ORM。您不想想要以这种方式在网络上拖动那么多数据两次;理想情况下,应该用纯 TSQL 编写,如果需要与其他来源的数据合并,也许可以使用批量插入/SqlBulkCopy 来填充单独的表。

That is not a task suitable for LINQ-to-SQL, or frankly any ORM. You do not want to drag that much data twice over the network in that way; that should ideally be written in pure TSQL, perhaps using bulk insert / SqlBulkCopy to populate a separate table if you need to combine with data from other sources.

酒几许 2024-10-28 04:22:55

我肯定会建议你改变架构,将大表解耦成几个小表,并且绝对避免对这种数据量使用 linq-to-sql。

以这样的方式创建架构,即为业务级别的每个实体提供类,这些类将调用 T-SQL 查询的存储过程来更新数据访问级别的数据。

I would definitely suggest that you change the architecture, decouple the big table into several small ones and definitely avoid linq-to-sql for this amount of data.

Create the architecture in that way that you have classes for each entity on a business level that will call stored procedures of T-SQL queries to update the data on data access level.

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