2010-11-30 59 views
0

一旦调用每个Web服务方法,就需要在DB中插入一些数据:在请求处理的开始和结束时。如何更新对象的一部分

我的意图是在请求处理开始时插入将包含所有收入信息的记录,并在此之后更新同一记录,一旦处理请求并准备好发回数据(或者发生错误并且我需要存储错误消息)。

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

  1. 第一次插入时 - 它进入DB;
  2. 对象更新之前的第二次 - 它从DB中获取;
  3. 第三次更新 - 它将再次访问DB。

如果我已经有从DB中提取的对象,那么是否有可能优化这样的过程?

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

回答

1

ORM适用于将完整行转换为完整对象,并再次返回 - 因此更新始终是完整对象。但是,Linq-to-SQL和实体框架都非常聪明,可以找出实体上哪些属性发生了变化,所以如果只更新某些字段,则使用UPDATE生成的SQL命令将只更新那些改变了领域。

所以基本上:你就试试吧!启动SQL分析器并查看SQL到数据库的内容;在实体框架中,我肯定的是,如果您只更改了一些字段,那么只有更改后的字段才会在UPDATE语句中更新,而没有其他内容。

+0

“试试” - 好主意:)其实我会的!可能我还需要改进我的存储库实现,以便保留已获取的对象以防止跳到DB(上面我的列表中的项目#2)。谢谢! – Budda 2010-11-30 23:00:36

相关问题