我是根据它的主键删除实体,然后我将我的存储库设为通用。这是我目前的删除方法:
public void Del(E entity) // where E : EntityObject on the class
{ if( entity != null)
DC.DeleteObject( entity);
return;
}
它在MVC 2 Web应用程序中运行。因此,用户从实体发送主键值以进行删除,我创建一个新实体,然后将其发送到Delete方法。这将提取主键并使用Where()子句删除该项。首先查询数据库似乎很愚蠢。
答案 0 :(得分:4)
在EF 4上,您不需要查询要删除(或更新)的对象,但您需要设置主键并将其附加到您的上下文。你的方法看起来像这样:
public void Del(E entity) // where E : EntityObject on the class
{
if( entity != null)
{
DC.Attach(entity);
DC.DeleteObject( entity);
DC.SaveChanges();
}
}
编辑:
可以在已删除的对象上调用DeleteObject方法。 http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.deleteobject.aspx
答案 1 :(得分:1)
您无需检索它,但如果不这样做, 需要将其附加到上下文中。