如何更新部分对象

时间:2010-11-30 18:31:20

标签: sql-server linq-to-sql

每次调用Web服务方法时,都需要在DB中插入一些数据:在请求处理的开始和最后。

我的目的是在请求处理开始时插入包含所有收入信息的记录,并在处理完请求后更新相同记录并准备好发送数据(或者发生错误,我需要存储错误消息)。

问题是收入数据可能很长,更新前的LINQ To SQL需要从DB获取对象数据然后再“存储”它。在这种情况下,“收入数据”将进行3次:

  1. 第一次插入时 - 进入DB;
  2. 对象更新前的第二次 - 从DB获取;
  3. 第3次更新 - 它将再次进入DB。
  4. 如果我已从DB获取对象,是否有可能优化此过程?

    是否同样适用于实体框架?它是否只允许更新对象的一部分?

1 个答案:

答案 0 :(得分:1)

ORM适用于将完整行转换为完整对象,然后再返回 - 因此更新始终是完整对象。

但是,Linq-to-SQL和Entity Framework都非常聪明,可以找出实体上已更改的属性,因此如果只更新某些字段,则使用UPDATE生成的SQL命令将仅更新这些更改的字段。

所以基本上:你只是试试吧!启动SQL事件探查器并查看SQL进入数据库的内容;在实体框架中,我很肯定如果您只更改某些字段,那么只有那些更改的字段才会在UPDATE语句中更新,而不会更新。