Pregunta

Digamos tener el siguiente código:

public void SaveOrUpdate(OrderContract orderContract)
{
   foreach (var orderContract in orderContract.Tests)
   {

      Order order=dataAccess.FindOne<Order>(x=>x.OrderId==orderContract.OrderId) 
                  ?? new Order();

      // Where there are updates, put the stuff in the 
      // contract over what we already had.
      Mapper.Map(orderContract, order);

       // if it is new then add it in so it is inserted by EF.
      if (orderedTest.OrderedTestId <= 0)
          dataAccess.Add(orderedTest);

   }
   dataAccess.SaveChanges();
}

¿Tiene algo que le importe si alguien actualiza un pedido después de recuperarlo (en el FindOne ¿llamar?

¿O simplemente sobrescribirá cualquier cambio que se haya realizado entre recuperar los datos y mi llamada a SaveChanges?

Si no lo hace, entonces una llamada ObjectContext.Connection.BeginTransaction ¿Será mejor para protegerme? O debería usar new TransactionScope()?

¿Y cómo puede saber cualquiera de esas filas que necesito tener en una transacción? (El hecho de que lea una fila no significa que lo quiera bloquear. O bloquea todas las tablas en el modelo (queso asquino)).

Nota: Me estoy ejecutando con SQL Server 2008 R2 y EF 4.1

¿Fue útil?

Solución

Por defecto, sí, sobrescribirá registros cambiados. Si está preocupado por su aplicación, lea esto:

http://msdn.microsoft.com/en-us/library/bb738618.aspx

Por defecto, el marco de la entidad implementa un modelo de concurrencia optimista. Esto significa que los bloqueos no se mantienen en los datos en la fuente de datos entre cuando se consultan los datos y se actualizan los datos. El marco de la entidad guarda los cambios de objetos en la base de datos sin verificar la concurrencia. Para las entidades que pueden experimentar un alto grado de concurrencia, recomendamos que la entidad defina una propiedad en la capa conceptual con un atributo de ConcurrencyMode = "fijo" ..... (Siga el enlace para leer más)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top