实体框架不能识别Add, Remove等方法

本文关键字:Remove 方法 Add 框架 不能 识别 实体 | 更新日期: 2023-09-27 18:07:07

我在ASP上使用实体框架。. NET MVC3与Visual Studio 2010,我有一个问题:在我改变数据库并将项目从一台计算机移动到另一台计算机后,我不再识别DbContext的方法,如Add, Remove,不知道如何复制它们。

说明这段代码可以在另一台计算机上运行。我没有对这个模型的数据库做任何相关的修改。

以"db"为DbContext,"TMSEntities"为实例名为例。

public class CategoryController : Controller
{
        //
        // GET: /Category/
        private TMSEntities db = new TMSEntities();
        [HttpPost]
        public ActionResult AddCategory(Category model)
        {
            bool Success = true;
            string Status = string.Empty;
            Category item = new Category();
            item.Name = model.Name.Trim();
            item.Description = model.Description;
            if (string.IsNullOrEmpty(item.Name))
            {
                Success = false;
                Status += "Category name can not be empty! <br />";
            }
            var duplicate = db.Categories.Where(a => a.Name == item.Name).Count();
            if (duplicate > 0)
            {
                Success = false;
                Status += "Name already exists! <br />";
            }
            if (Success)
            {
                db.Categories.Add(item);
                db.SaveChanges();
                return Json(new { Success = Success, Status = Status });
            }
            else
            {
                return Json(new { Success = Success, Status = Status });
            }
        }
}

之后,我的错误是这样的:

System.Data.Objects。ObjectSet'不包含'Add'的定义,也没有扩展方法'Add'接受类型为

的第一个参数

System.Data.Objects。可以找到ObjectSet'(您是否缺少using指令或程序集引用?)

实体框架不能识别Add, Remove等方法

用。add()代替。addobject(),用。deleteobject()代替。remove…因为

工作的原因是因为您使用Object内容而不是DBContext声明了Context。DBContext是ObjectContext的包装器。更容易使用。不知怎么的,你的练习把这两个弄混了。在该位置创建模型和内容时,如果使用了正确的项目类型并且包含了最新的nuget包,那么您应该得到一个使用DBContext的T4(生成代码的模板)。上面的代码用于访问从DBContext派生的上下文。建议您仔细查看您的上下文定义并重新生成它。强烈建议您使用DBcontext