저는 EntityFramework 4.1을 사용합니다.SaveChanges()의 기본 동작을 재정 의하여 SaveChanges()를 여러 번 호출하려면 어떻게해야합니까?
달성하고자하는 것은 FooEntity 인 엔티티에서 SaveChanges 메소드가 호출 될 때마다 먼저 해당 엔티티를 업데이트 한 후 삭제하고 싶습니다.
아래와 같이 기본 동작을 재정의하려고 시도하지만 원하는대로 달성 할 수 없습니다. Db를 업데이트합니다. 삭제는 허용되지 않습니다.
어떻게하면됩니까?
public override int SaveChanges()
{
var entitiesMarkedAsDelete = ChangeTracker.Entries<FooEntity>()
.Where(e => e.State==EntityState.Deleted);
foreach (var e in entitiesMarkedAsDelete)
{
e.State = EntityState.Modified;
}
base.SaveChanges(); // To enforce an UPDATE first
// Now, I try to re-mark them to DELETE
foreach (var e in entitiesMarkedAsDelete)
{
e.State = EntityState.Deleted;
}
base.SaveChanges(); // And hope that they will be deleted
// RESULT: 1st call of base.Savechanges() updates the entities
// but the 2nd call of base.Savechanges() does not make any changes on the UPDATED
// entities -and they are NOT DELETED.
}
SaveChanges의 첫 번째 호출은 어떻게 든 changeTracker를 새로 고칩니다. EntityState를 Deleted로 변경하더라도이를 무시합니다. 그러나 내가 옳다해도 이것을 어떻게 돌봐야할지 모르겠다. – pencilCake
엔티티 프레임 워크 – pencilCake
나는 그럴만 한 이유가 있다고 확신하지만, 삭제하기 전에 업데이트는 무의미한 것으로 보입니까? – James