每次调用Web服务方法时,都需要在DB中插入一些数据:在请求处理的开始和最后。
我的目的是在请求处理开始时插入包含所有收入信息的记录,并在处理完请求后更新相同记录并准备好发送数据(或者发生错误,我需要存储错误消息)。
问题是收入数据可能很长,更新前的LINQ To SQL需要从DB获取对象数据然后再“存储”它。在这种情况下,“收入数据”将进行3次:
如果我已从DB获取对象,是否有可能优化此过程?
是否同样适用于实体框架?它是否只允许更新对象的一部分?
答案 0 :(得分:1)
ORM适用于将完整行转换为完整对象,然后再返回 - 因此更新始终是完整对象。
但是,Linq-to-SQL和Entity Framework都非常聪明,可以找出实体上已更改的属性,因此如果只更新某些字段,则使用UPDATE
生成的SQL命令将仅更新这些更改的字段。
所以基本上:你只是试试吧!启动SQL事件探查器并查看SQL进入数据库的内容;在实体框架中,我很肯定如果您只更改某些字段,那么只有那些更改的字段才会在UPDATE
语句中更新,而不会更新。