我想更新1000万条记录数据库中的许多记录。这里的示例表明可以像这样进行更新:
Customer c = (from x in dataBase.Customers
where x.Name == "Test"
selext x).First();
c.Name = "New Name";
dataBase.SaveChanges();
但这看起来像是两次访问数据库。一个获取记录,另一个保存记录。如果我在一次通话中更新了一千条记录,我认为这必须从数据库中将1,000条记录拉到我的WCF服务器,进行更改,然后将1,000条记录通过LAN推送回数据库服务器。
在过去,“更新客户设置名称='测试',其中年份< 1960”将是LAN上的一条指令,并且工作在数据库服务器上完成。
Linq to Entities中是否有类似的内容?
* BTW:这是我想要实现的一个简单示例,我实际上有数百个命令要发布,我不希望2 *数百次访问数据库,也没有看到需要将数据库中的所有数据带到WCF只是为了更改它并将其发送回去!*
答案 0 :(得分:3)
如你所怀疑的那样。如果您有1000条记录,您确实会看到此操作的1001个数据库请求。 ORM非常适合将对象推入内存,使用它们然后更新它们。它们不适合批量操作。在这种情况下,最好的办法是使用ADO.Net并通过代码传递更新语句,或者将批量更新命令放在存储过程中并将proc映射到EF中的函数。