【发布时间】:2014-05-05 15:18:38
【问题描述】:
我之前使用的是带有此代码的存储库:
public virtual void Delete(T entity)
{
DbEntityEntry dbEntityEntry = DbContext.Entry(entity);
if (dbEntityEntry.State != EntityState.Deleted)
{
dbEntityEntry.State = EntityState.Deleted;
}
else
{
DbSet.Attach(entity);
DbSet.Remove(entity);
}
}
我的应用程序很简单,我注意到很多人说“EF 已经是一个存储库,所以你不需要使用另一个”。问题是,如果没有外部存储库包装,我现在发现当我想编写一个简单的删除代码时,我发现有必要做这样的事情:
DbEntityEntry dbEntityEntry1 = db.Entry(objectiveDetail);
if (dbEntityEntry1.State != EntityState.Deleted)
{
dbEntityEntry1.State = EntityState.Deleted;
}
else
{
db.ObjectiveDetails.Attach(objectiveDetail);
db.ObjectiveDetails.Remove(objectiveDetail);
}
我的单行 repo.delete 现在已更改为十行。有没有一种方法可以让我重新使用 EF 简化条目的删除,而无需对所有行进行硬编码以检查条目是否已附加等?
【问题讨论】:
标签: asp.net asp.net-mvc entity-framework asp.net-web-api