无法使用EF删除

时间:2012-06-01 22:04:05

标签: entity-framework

发现问题...我在我的context.entity上设置了MergeOption.NoTracking ...叹息

不确定我做错了什么。

无法删除对象,因为在ObjectStateManager中找不到该对象。

        var deleteOrders = db.TABLE.Where(x => x.WCCR_ID == WccrId && x.ADAM == null).ToList();
        foreach (var item in deleteOrders)
        {

            db.TABLE.DeleteObject(item);
        }
        db.SaveChanges();

我尝试附加项目db.Attach(item),但是抛出错误'具有相同密钥的对象已经存在'。

感谢您的帮助。欢呼声

1 个答案:

答案 0 :(得分:1)

您的代码看起来不错。尝试使用:

var deleteOrders = db.TABLE.Where(x => x.WCCR_ID == WccrId && x.ADAM == null)
                           .ToList();
        foreach (var item in deleteOrders)
        {
            db.Entry(item).State = System.Data.EntityState.Deleted;            
        }
        db.SaveChanges();

<强>更新

EF 4.0使用ObjectContext类。

using(YourContext ctx = new YourContext())
{
   ctx.ObjectStateManager.ChangeObjectState(entity, System.Data.EntityState.Deleted);
}

EF 4.1使用DbContext类,其中定义了Set<T>Entry等方法。

using(YourContext ctx = new YourContext())
{
   ctx.Entry(entity).State = System.Data.EntityState.Deleted;
}

更新2

NuGet包仅包含EF 4.1运行时,不包括用于将DbContext与Model First和Database First开发一起使用的Visual Studio项模板。

下载:http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=26825