我遇到問題。我試圖用並行來更新數據庫庫。下面是代碼:LinqToSql。更新一行時死鎖。 Parallel.For
Parallel.For(rCnt, range.Rows.Count + 1, (jrCnt, loopState) =>
{
var prcI = new Price(); // new
/*bla bla bla bla - bla bla - bla bla - bla */
if ((!string.IsNullOrEmpty(prcI.name)) && (prcI.prc != 0)) // process add or update
{
prcI.company = nameprice;
prcI.date = datatimeselect.Text;
Accessor.AddProductUpdateProduct(prcI); // main func
/*bla bla bla bla - bla bla - bla bla - bla bla - bla */
}
這裏的功能代碼字段更新:
public static bool AddProductUpdateProduct(Price price)
{
bool add = false;
var db = new PriceDataContext();
var matchedprod =
db.Price.Single(x => x.name == price.name && x.date != price.date && x.company == price.company); // find match
if (matchedprod != null) // match FOUnDE
{
if (matchedprod.prc != price.prc)
{
matchedprod.date = price.date;
matchedprod.prc = price.prc;
}
else
{
matchedprod.date = price.date;
}
db.SubmitChanges(); // DEADLOCK is her!!!
}
/*bla - bla bla - bla bla - bla bla - bla bla - bla */
}
當我創造了紀錄,一切都很好!
謝謝!
您在這裏更新/插入了多少條記錄? –
與3,000至10,000不同。 – JinDeveloper