OnDelete также удалить файл - PullRequest
       3

OnDelete также удалить файл

3 голосов
/ 13 августа 2011

При использовании EF4.1 существует ли событие функции, которое я могу переопределить в моем POCO, которое будет вызываться при его удалении? Я сохраняю изображения в файловой системе с БД, содержащей ссылку на файл. При удалении из БД я также хочу удалить соответствующий файл.

Ответы [ 2 ]

1 голос
/ 13 августа 2011

Вы можете переопределить метод SaveChanges вашего DbContext.

public override int SaveChanges()
{
    var deletedEntities = ChangeTracker.Entries().Where(entry => entry.State == EntityState.Deleted);

    foreach (var deletedEntity in deletedEntities)
    {
        if (deletedEntity .Entity is MyEntity)
        {
             //delete the file
        }
    }

    return base.SaveChanges();
}

Вы можете заключить удаление файла и обновление базы данных в одну транзакцию следующим образом

using (var scope = new TransactionScope())
{
    //your deletion logic

    myContext.SaveChanges();

    scope.Complete();
}
0 голосов
/ 13 августа 2011

Попробуйте сделать это в триггере уровня базы данных. EF не подходящее место, чтобы справиться с этим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...