我正在關注Pro ASP.NET MVC Framework中的體育商店示例,並且我收到了一個與我找不到的LINQ相關的異常。完整的代碼可通過網站獲得,但這裏是傳達問題的片段。LINQ to SQL ASP.NET MVC中的結果DuplicateKeyException
private Table<Product> productsTable;
// ...
public void SaveProduct(Product product) {
if (product.ProductID == 0)
productsTable.InsertOnSubmit(product);
else {
productsTable.Attach(product);
productsTable.Context.Refresh(RefreshMode.KeepCurrentValues, product);
}
productsTable.Context.SubmitChanges();
}
在UI,我更新現有的產品,然後單擊保存和控制器通過調用SaveProduct(產品)處理後 - 其中,產品是通過參數傳遞。附加產品時會引發DuplicateKeyException。在調試器中,產品參數被初始化並且ID爲2.
我不期待確切的答案,但我希望有人可以給我一些提示,以瞭解我在哪裏可以解決這個問題。
UPDATE:下面的代碼工作,但我仍然希望得到上面的附加方法工作。
public void SaveProduct(Product product) {
if (product.ProductID == 0)
productsTable.InsertOnSubmit(product);
else {
Product p2 = productsTable.Single(em => em.ProductID == product.ProductID);
p2.Name = product.Name;
p2.Description = product.Description;
p2.Price = product.Price;
p2.Category = product.Category;
}
productsTable.Context.SubmitChanges();
}
聽起來像它可能試圖做一個INSERT,當它應該做一個更新。您可以更新產品2,但不能插入另一個。 – DOK 2009-10-21 00:52:58