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