我在WCF服务上有以下方法:
/// <summary>
/// Receives the result of a request processing
/// </summary>
/// <param name="results">The resulting statuses for the processed account requests</param>
/// <returns>Whether the response was successfully handled</returns>
public bool SendRequestProcessingResult(IEnumerable<RequestProcessingResult> results)
{
foreach (var result in results)
{
// update entity
}
}
有没有办法一次更新所有实体?我应该只添加每个更新然后SaveChanges
吗?在EF 4.1中进行这种“大规模”更新的最佳方法是什么?
答案 0 :(得分:5)
我应该只添加每个更新,然后添加
SaveChanges
吗?
是的。
请注意,虽然EF是一个ORM,但对于这种性质的大批量更新,它并没有真正设计(性能方面,我的意思)。如果你需要从中获取更多性能,那么你几乎可以编写一批SQL语句并以老式的方式执行它们。
大多数人(我的意思是除Facebook,Twitter等之外)通常看不出你所建议的问题,而且你得到的级别越高,你的代码的意图就越失去所有的技术实施。
重要的是要强调,除非你已经测量并发现它缺乏,否则没有必要提高代码的性能。首先是正确性,可读性和维护性的代码,然后测量性能并在需要时进行有针对性的改进。