在對象列表上批量更新我想創建一個函數,該函數接受已設置其屬性的對象列表,並對它們進行批量更新或插入,僅對數據庫進行1次調用。使用EntityFramework 6和Linq
(UPDATE)這裏是工作的版本:
public static void BatchInsertProducts(IList<Product> productList)
{
using (var context = new DbContext())
{
context.Products.AddRange(productList);
context.SaveChanges();
}
}
這是我在做任何更新和嘗試或基於ID的幾個項目的插入。我不認爲我可以在這裏使用的AddRange所以我這樣嘗試了,我得到一個錯誤:
public static void SaveMultipleProducts(IList<Product> productList)
{
using (var context = new DbContext())
{
foreach (Account p in productList)
{
if (p.ID == 0)
{
context.Entry(p).State = EntityState.Added;
p.InsertUserId = "jtunney";
p.InsertDate = DateTime.Now;
}
else
{
context.Entry(p).State = EntityState.Modified;
p.UpdateUserId = "jtunney";
p.UpdateDate = DateTime.Now;
}
}
context.SaveChanges();
}
}
正在您的productList中修改具有相同值的所有對象的相同屬性? –
在某些情況下,所有的值都是相同的,但在其他情況下,所有的值都可能不同。比方說,我創建了一個簡單的productList,並以不同的價格向它添加3個產品,然後將其傳遞給我的BulkInsert函數。 linq能做這個操作嗎?或者我將不得不創建一個長字符串,並使用Database.SqlQuery函數直接將其傳遞給數據庫? – JTunney
你爲什麼要在批處理中做到這一點? –