无法在实体框架中调用DeleteObject - 缺少程序集引用?

时间:2011-07-20 14:53:59

标签: c# asp.net-mvc entity-framework

我试图在我的asp.net MVC3 / Code-first Entity Framework应用程序中删除一个对象,但我似乎没有必要的选项,因为它会带来一个"不包含DeleteObject"的定义;错误。任何人都知道我是否错过了装配参考。这是我的存储库代码:

private dbContext db = new dbContext();

public void DeleteAccessDetails(AccessDetails details)
{
     db.DeleteObject(details); //error here as DeleteObject isn't recognised
}

以下是我的参考资料:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using MySite.Models;
using System.Data;
using System.Data.Objects;
using System.Web.Mvc;
using System.Data.Entity;

我认为让System.Data.Entity足以启动DeleteObject,但是intellisense几乎没有提出任何选项 - 只有Dispose,Entry,SaveChanges和Set

编辑:这也是我访问存储库的代码:

Repository rep = new Repository();
AccessDetails paymentUpdate = rep.GetPaymentByID(item.AccessDetailsTableID);
rep.DeleteAccessDetails(paymentUpdate);

编辑2:这是我的参考文件夹的图像:

enter image description here

由于

4 个答案:

答案 0 :(得分:24)

DbContext没有DeleteObject()方法。而不是使用Remove()方法从DbSet清除对象,然后保存更改。

dbContext db = new dbContext(); // Arrange the context

Department dept = db.Departments.Single(p => p.Id == "1"); // Find the item to remove

db.Departments.Remove(dept); // Remove from the context

b.SaveChanges(); // Delete from the database

答案 1 :(得分:4)

EF4.1中DbContext的文档似乎表明它不包含该类的删除方法:http://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext(v=vs.103).aspx ...

这个问题看起来很相似 - 可能会有所帮助:MVC 3 EF 4.1 dbContext - Deleting one-to-many data object with non-nullable foreign-key relation

答案 2 :(得分:0)

您可以使用以下格式:

context.Entry(temp).State = EntityState.Deleted;  

Remove()仅适用于DBContext ..

答案 3 :(得分:0)

在Mvc 5中 删除列表时使用RemoveRange而不是DeleteObject。

RemoveRange();