我找到了一个存储库模式实现。
通用存储库的 Delete()
方法的实现是否正确?
public virtual void Delete(T entity)
{
DBEntityEntry entry = this.DbContext.Entry(entity);
if (entry != EntityState.Deleted)
{
entry.State = EntityState.Deleted;
}
else
{
this.DbSet.Attach(entity);
this.DbSet.Remove(entity);
}
}
如果条目的状态为Detached
,将条目附加到DbSet
时会抛出错误吗?
最佳答案
如果您的所有实体都有 Id
(例如从 IEntity
继承的所有实体)属性,请尝试以下代码:
public interface IEntity
{
public int Id { get; set; }
}
// T is IEntity
public virtual void Delete(T entity)
{
var ent = this.DbContext.Set<T>().Find(entity.Id);
if (ent != null)
{
this.DbContext.Set<T>().Remove(entity)
}
}
如果没有,请尝试以下代码:
public virtual void Delete(T entity) {
DbEntityEntry dbEntityEntry = this.DbContext.Entry<T>(entity);
if (dbEntityEntry.State != EntityState.Detached) {
dbEntityEntry.State = EntityState.Deleted;
}
else {
DbSet dbSet = this.DbContext.Set<T>();
dbSet.Attach(entity);
dbSet.Remove(entity);
}
}
关于c# - 实现存储库模式的删除方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26083206/