实体框架4:DeleteObject(实体):我是否需要首先检索此对象?

时间:2010-10-28 15:55:01

标签: c# entity-framework-4

我是根据它的主键删除实体,然后我将我的存储库设为通用。这是我目前的删除方法:

public void Del(E entity) // where E : EntityObject on the class
{   if( entity != null)
        DC.DeleteObject( entity);
    return; 
}

它在MVC 2 Web应用程序中运行。因此,用户从实体发送主键值以进行删除,我创建一个新实体,然后将其发送到Delete方法。这将提取主键并使用Where()子句删除该项。首先查询数据库似乎很愚蠢。

2 个答案:

答案 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)

您无需检索它,但如果不这样做, 需要将其附加到上下文中。