0

发现问题...我在 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),但这会引发错误“具有相同密钥的对象已存在”。

谢谢你的帮助。干杯

4

1 回答 1

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方法 likeSet<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

于 2012-06-01T23:16:39.093 回答