Я использую asp.net mvc для приложения. Я взял некоторые рекомендации из серии Роба Конери на витрине магазина MVC. Я использую шаблон доступа к данным, очень похожий на тот, который он использовал в витрине.
Однако я добавил небольшую разницу в шаблон. Каждый класс, который я создал в своей модели, имеет свойство 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 = true; тогда код работает, и значения вставляются правильно.
Однако, если я установлю dbOrder.IsNew = false; тогда ничего не происходит ... ошибок нет - просто не обновляется порядок.
Я использую DebuggerWriter здесь: http://www.u2u.info/Blogs/Kris/Lists/Posts/Post.aspx?ID=11 для отслеживания генерируемого SQL, и, как и ожидалось, когда значение IsNew равно true, SQL вставки генерируется и выполняется правильно. Однако если для параметра IsNew задано значение false, SQL не создается, поэтому ничего не выполняется.
Я подтвердил, что проблема здесь ( LINQ не обновляется .SubmitChanges () ) не является проблемой.
Любая помощь приветствуется.