Tengo una entidad, llamémosla CommonEntity
que tiene una clave principal utilizada como clave foránea en muchas otras entidades. A medida que se desarrolla la aplicación, estos enlaces seguirán creciendo.Entity Framework: compruebe todas las relaciones de una entidad para el uso de la clave externa
Deseo obtener una forma de ver si CommonEntity
se puede eliminar de forma segura (es decir, no es utilizado por ninguna otra entidad).
que se dan cuenta de que puedo hacer
if(!ce.EntityA.Any() && !ce.EntityB.Any() ... && !ce.EntityN.Any())
{
//Delete
}
pero estoy esperando una manera de sólo comprobar todas las relaciones de forma automática, ya que no me gusta la idea de tener que volver y cambiar este código de forma manual cada vez que agregamos una nueva relación. Quizás hay algo en EF4 + que no conozco?
Pensé que podría ser posible utilizar un ámbito de transacción para simplemente tratar de eliminar el objeto y deshacerlo si falla, pero no estaba seguro de si hubo algún efecto secundario adverso con este enfoque.
¿Hay un mejor enfoque?
EDIT: Parece que VS2012 ha utilizado EF5 a pesar de que el proyecto es .Net 4, por lo que ha creado el modelo con POCOs aunque se haya generado desde un DB.
Si lo dejo fallar, ¿revertirá automáticamente cualquier conexión en cascada exitosa sin un ámbito de transacción? – BenC3
Encontré la respuesta: SaveChanges() usa una transacción, por lo que cualquier falla se revertirá: http://msdn.microsoft.com/en-us/library/bb336792.aspx – BenC3
No es bueno en absoluto si mantiene sus entidades abiertas ! – bytecode77