我正在使用asp.net mvc的應用程序。我已經從Rob Conery的MVC店面系列中獲得了一些指導。我正在使用他在店面中使用的非常類似的數據訪問模式。Linq到SQL更新不起作用使用存儲庫模式
但是,我在模式中添加了一個小的差異。我在模型中創建的每個類都有一個名爲IsNew的屬性。這樣做的目的是讓我指定是否應該在數據庫中插入或更新。
下面是一些代碼:
在我的控制器:
OrderService orderService = new OrderService();
Order dbOrder = orderService.GetOrder(ID);
if (ModelState.IsValid)
{
dbOrder.SomeField1 = "Whatever1";
dbOrder.SomeField2 = "Whatever2";
dbOrder.DateModified = DateTime.Now;
dbOrder.IsNew = false;
orderService.SaveOrder(dbOrder);
}
然後在SQLOrderRepository:
public void SaveOrder(Order order)
{
ORDER dbOrder = new ORDER();
dbOrder.O_ID = order.ID;
dbOrder.O_SomeField1 = order.SomeField1;
dbOrder.O_SomeField2 = order.SomeField2;
dbOrder.O_DateCreated = order.DateCreated;
dbOrder.O_DateModified = order.DateModified;
if (order.IsNew)
db.ORDERs.InsertOnSubmit(dbOrder);
db.SubmitChanges();
}
如果我改變控制器代碼,以便dbOrder.IsNew =真;然後代碼工作,並正確插入值。
但是,如果我設置了dbOrder.IsNew = false;那麼沒有任何反應......沒有錯誤 - 它只是不更新訂單。
我在此處使用DebuggerWriter:http://www.u2u.info/Blogs/Kris/Lists/Posts/Post.aspx?ID=11來跟蹤正在生成的SQL,並且如預期的那樣,當IsNew值爲true時,會生成並正確執行Insert SQL。但是,當IsNew設置爲false時,似乎沒有生成SQL,因此不執行任何操作。
我驗證了這裏的問題(LINQ not updating on .SubmitChanges())不是問題。
任何幫助表示讚賞。