当我尝试修改MVC应用程序中的Delete方法时出现此错误。
错误1'ContactManager.Models.ContactManagerDBEntities2'没有 包含'ApplyPropertyChanges'的定义,没有扩展名 方法'ApplyPropertyChanges'接受第一个类型的参数 可以找到'ContactManager.Models.ContactManagerDBEntities2'(是 你错过了使用指令或程序集 参考?)c:\ users \ sp_admin \ documents \ visual studio 2013 \ Projects \ ContactManager \ ContactManager \ Controllers \ HomeController.cs 123 25 ContactManager
错误2'ContactManager.Models.Contact'不包含定义 对于'EntityKey'并且没有扩展方法'EntityKey'接受第一个 可以找到类型为“ContactManager.Models.Contact”的参数(是 你错过了使用指令或程序集 参考?)c:\ users \ sp_admin \ documents \ visual studio 2013 \ Projects \ ContactManager \ ContactManager \ Controllers \ HomeController.cs 123 62 ContactManager
这是HomeControllers.cs
// GET: /Home/Delete/5
public ActionResult Delete(int id)
{
var contactToDelete = (from c in _entities.Contacts
where c.Id == id
select c).FirstOrDefault();
return View(contactToDelete);
}
//
// POST: /Home/Delete/5
[HttpPost]
/* public ActionResult Delete(int id, FormCollection collection) */
public ActionResult Delete(Contact contactToDelete)
{
if (!ModelState.IsValid)
return View();
try
{
var originalContact = (from c in _entities.Contacts
where c.Id == contactToDelete.Id
select c).FirstOrDefault();
_entities.ApplyPropertyChanges(originalContact.EntityKey.EntitySetName,
contactToDelete); <== here is the code in error ApplyPropertyChanges and
EntityKey.
_entities.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View();
}
}
这是ContactManagerModel.Context.cs我觉得这里缺少什么?但是这个 是从模板生成的。
namespace ContactManager.Models
{
using System;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
public partial class ContactManagerDBEntities2 : DbContext
{
public ContactManagerDBEntities2()
: base("name=ContactManagerDBEntities2")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<Contact> Contacts { get; set; }
}
}
Contact.cs
namespace ContactManager.Models
{
using System;
using System.Collections.Generic;
public partial class Contact
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
}
}
知道什么是错误的,因为这段代码是从模板生成的? 感谢
答案 0 :(得分:3)
我认为你只需要调用Remove
方法来删除Contact的实例。见下文:
try
{
_entities.Contacts.Remove(contactToDelete);
_entities.SaveChanges();
return RedirectToAction("Index");
}
更新:
更新Contact
的实例时:
_entities.Contacts.Attach(updatedContact);
_entities.Entry(updatedContact).State = EntityState.Modified;
_entities.SaveChanges();
有关更多信息,请查看以下链接,这是一篇关于使用Entity Framework进行CRUD操作的好文章。 CRUD Operations Using Entity Framework