Estoy intentando que mi lógica de negocios no conozca el funcionamiento interno de mi Data Layer y vica versa.¿Hay alguna manera de encontrar todas las entidades que han eliminado sus relaciones?
Pero Entity Framework lo está haciendo difícil. Puedo insertar en una colección (en mi capa empresarial) sin una referencia a la ObjectContext:
order.Containers.Add(new Container { ContainerId = containerId, Order = order });
Y que salva bien cuando llega el momento de hacer un SaveChanges()
en la capa de datos.
Pero para eliminar un elemento de una colección, necesito una referencia al ObjectContext. (Soy el caso # 1 en este guide to deleting EF Entities.) Si acabo de hacer esto:
delContainers.ForEach(container => order.Containers.Remove(container));
Entonces cuando llamo SaveChanges()
me sale una excepción que me dice que tengo que eliminar el objeto, así como la referencia.
Por lo tanto, mis opciones como lo veo son:
- Para pasar un delegado a mi lógica de negocios que va a llamar a la Entidad marco ObjectContext Eliminar método.
- O (estoy esperando) encontrar una forma de obtener todas las entidades que han tenido su referencia eliminada y realmente eliminarlas. (Justo antes de llamar
SaveChanges()
en mi capa de datos.)
¿Alguien sabe de una manera de hacer eso?
ACTUALIZACIÓN:
yo probamos este:
// Add an event when Save Changes is called
this.ObjectContext.SavingChanges += OnSavingChanges;
...
void OnSavingChanges(object sender, EventArgs e)
{
var objectStateEntries = ObjectContext.ObjectStateManager
.GetObjectStateEntries(EntityState.Deleted);
foreach (var objectStateEntry in objectStateEntries)
{
if (objectStateEntry.IsRelationship)
{
// Find some way to delete the related entity
}
}
}
Pero ninguno a pesar de que he eliminado una relación, el conjunto de elementos eliminados está vacía.
(I trató de ver todos los artículos demasiado y mi relación no está ahí. Es evidente que hay algo fundamental que no consigo sobre ObjectStateManager.)
Relacionados: http://stackoverflow.com/questions/20707344/entity-framework-6-detect-relationship-changes – Nathan