Estoy usando asp.net mvc para una aplicación. He tomado algunas pautas de la serie de Rob Conery en la tienda de MVC. Estoy usando un patrón de acceso a datos muy similar al que usó en la tienda.Actualización de Linq a SQL que no funciona con el patrón de repositorio
Sin embargo, he agregado una pequeña diferencia al patrón. Cada clase que he creado en mi modelo tiene una propiedad llamada IsNew. La intención en esto es permitirme especificar si debería insertar o actualizar en la base de datos.
Aquí hay algo de código:
En mi controlador:
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);
}
Y luego en el 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();
}
Si cambio el código del controlador para que el dbOrder.IsNew = true ; entonces el código funciona, y los valores se insertan correctamente.
Sin embargo, si configuro el dbOrder.IsNew = false; entonces no pasa nada ... no hay errores, simplemente no actualiza el orden.
Estoy utilizando DebuggerWriter aquí: http://www.u2u.info/Blogs/Kris/Lists/Posts/Post.aspx?ID=11 para rastrear el SQL que se está generando, y como se esperaba, cuando el valor de IsNew es verdadero, el SQL de inserción se genera y se ejecuta correctamente. Sin embargo, cuando IsNew se establece en falso, parece que no se ha generado SQL, por lo que no se ejecuta nada.
He verificado que el problema aquí (LINQ not updating on .SubmitChanges()) no es el problema.
Cualquier ayuda es apreciada.