我有我的模型根據字典形式進來的一些信息更新數據庫。我現在做的方式是如下:數據庫更新字典/列表速度
SortedItems = db.SortedItems.ToList();
foreach (SortedItem si in SortedItems)
{
string key = si.PK1 + si.PK2 + si.PK3 + si.PK4;
if (updates.ContainsKey(key) && updatas[key] != si.SortRank)
{
si.SortRank = updates[key];
db.SortedItems.ApplyCurrentValues(si);
}
}
db.SaveChanges();
難道是更快的通過字典迭代,併爲每個項目做一個數據庫查詢?字典只包含已更改的項目,並且可以是從2項目到整個集合的任何地方。我對替代方法的想法是:
foreach(KeyValuePair<string, int?> kvp in updates)
{
SortedItem si = db.SortedItems.Single(s => (s.PK1 + s.PK2 + s.PK3 + s.PK4).Equals(kvp.Key));
si.SortRank = kvp.Value;
db.SortedItems.ApplyCurrentValues(si);
}
db.SaveChanges();
編輯:假設更新的數量通常是DB的約5-20%entires
要記住的主要事情是,您的數據庫調用的可能性比字典查找要慢。因此,如果可能的話,您想盡量減少數據庫交互(作爲一般經驗)。 –