encontré an MSDN article que describe cómo maneja EF concurrencia al guardar cambios:concurrencia optimista en ADO.NET Entity Framework
Por defecto [...] Servicios de objeto ahorra objeto cambios en la base de datos sin comprobación para concurrencia. Para propiedades que podrían experimentar un alto grado de concurrencia, que recomendamos que la propiedad de entidad sea definido en la capa conceptual con un atributo de ConcurrencyMode = "fijo"
Tengo dos preguntas:
al no tener propiedades en mi modelo en el que
ConcurrencyMode="fixed"
, ¿es seguro para mí asumir que si alguna vez unOptimisticConcurrencyException
se lanza al guardar los cambios, es porque exis la entidad ya no ts en el almacén de datos, es decir, ha sido eliminado por otro usuario o me falta algo?imagino EF ejecución de una -statement
UPDATE
que se ve algo como esto, que, como yo lo veo, sólo causará unOptimisticConcurrencyException
a ser lanzado si la persona con ID = 1 no existe:UPDATE Person SET FirstName = 'John' AND LastName = 'Smith' WHERE ID = 1
Cuando usa
ConcurrencyMode="fixed"
, ¿EF comprueba la concurrencia al eliminar entidades también? En otras palabras, se EF jamás ejecutar un -statementDELETE
que tiene este aspecto (con algo más que la clave principal en elWHERE
-clause):DELETE FROM Person WHERE ID = 1 AND LastName = 'Doe'
Buena respuesta. Esta fue _exactamente_ la información que estaba buscando. ¡Gracias un montón! – bernhof