Are*_*ton 2 c# entity-framework soft-delete
我试图阻止我的数据库表上的任何删除.目前正在使用Entity Framework 5.首先,这是我的代码,
public override int SaveChanges()
{
var Changed = ChangeTracker.Entries();
if (Changed != null)
{
foreach (var entry in Changed.Where(e => e.State == EntityState.Deleted))
{
entry.State = EntityState.Unchanged;
}
}
return base.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
我已经设法以这种方式阻止它.当我使用EF的Remove方法时它不再工作了.但是,我想要实现的是,当我使用给定ID的remove方法时,我想设置isDeleted(这是我所有数据库中的(位)列表)值为false.目前,我迷失在互联网上的文件和共享代码中.
谢谢
我可能会通过使软删除实体实现一个接口来处理这个问题,比如ISoftDeletable.
public interface ISoftDeletable
{
bool IsDeleted { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后扩展上面的代码以检查实体类型是否实现了ISoftDeletable接口,如果它只是将IsDeleted设置为true.
public override int SaveChanges()
{
var Changed = ChangeTracker.Entries();
if (Changed != null)
{
foreach (var entry in Changed.Where(e => e.State == EntityState.Deleted))
{
entry.State = EntityState.Unchanged;
if (entry.Entity is ISoftDeletable)
{
// Set IsDeleted....
}
}
}
return base.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
然后,您需要确保对实现ISoftDeletable的实体的查询过滤掉那些被软删除的实体.
| 归档时间: |
|
| 查看次数: |
2247 次 |
| 最近记录: |