【发布时间】:2011-10-13 15:18:24
【问题描述】:
如果我有 ID,请告诉我这是否是一种在不获取实体的情况下删除实体的不错方法。
我有一个具有以下界面的通用商店(我只会显示删除):
public interface IStore : IReadOnlyStore
{
void Delete<TEntity>(TEntity entity) where TEntity : class, IEntity, new();
void SaveChanges();
}
在该接口的具体 Store 类中,这是我的删除方法:
public void Delete<TEntity>(TEntity entity) where TEntity : class, IEntity, new()
{
var obj = Ctx.Entry(entity);
if (obj.State == System.Data.EntityState.Detached)
{
Ctx.Set(typeof(TEntity)).Attach(obj.Entity);
}
Ctx.Set(typeof(TEntity)).Remove(obj.Entity);
}
我已经测试了两个新实体:
Store.Delete(new Foo() { Id = request.Entity.Id });
以及获取实体然后调用删除。
通过调试,我对这两种情况都有预期的效果。
我只是想确保这是一个好的设计并且这种方法没有副作用。
作为参考,Ctx 只是 DbContext 本身。
谢谢。
【问题讨论】:
标签: entity-framework-4.1 ef-code-first