3

我想更新 1000 万条记录数据库中的许多记录。此处的示例表明可以像这样进行更新:

Customer c = (from x in dataBase.Customers
             where x.Name == "Test"
             selext x).First();
c.Name = "New Name";
dataBase.SaveChanges();

但这看起来像是两次访问数据库。一个获取记录,另一个保存记录。如果我在一次调用中更新了 1000 条记录,我认为这将不得不将 1000 条记录从数据库中提取到我的 WCF 服务器,进行更改,然后通过 LAN 将 1000 条记录推回数据库服务器。

在过去,“Update Customers set Name = 'Test' where Year < 1960”将是 LAN 上的一条指令,工作在数据库服务器上完成。

Linq to Entity中是否有类似的东西?

*顺便说一句:这是我想要实现的一个简单示例,我实际上有数百个命令要发出,我不希望 2*数百次访问数据库,我也不认为需要将所有从数据库到 WCF 的数据只是为了更改它并将其发送回来!*

4

1 回答 1

3

正如你所怀疑的那样。如果您有 1000 条记录,您确实会看到针对此操作的 1001 个数据库请求。ORM 非常适合将对象推入内存、使用它们然后更新它们。它们不适合批量操作。在这种情况下,您最好的选择是使用 ADO.Net 并通过代码传递更新语句,或者将批量更新命令放入存储的过程中并将该过程映射到 EF 中的函数。

于 2012-10-05T13:09:57.027 回答