如何使用外键更新实体?

时间:2013-01-24 07:31:27

标签: asp.net-mvc-3

我有两个实体如下:

 public class Package
     {
            public int PackageId { get; set; }
            public int BusinessId { get; set; }

             public string Name { get; set; }
     }

并且

   public class Business
     {


    public int BusinessId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    }

我想编辑包并更新相关的Business实体。我一直在尝试以下方法:

    [HttpPost]
    public ActionResult Edit(Package package)
    {

        if (ModelState.IsValid)
        {

                db.Packages.Attach(new Package { PackageId=package.PackageId
       });


                db.Entry(package).State = EntityState.Modified;

                db.SaveChanges();


            return RedirectToAction("Index");
        }
        ViewBag.GenreId = new SelectList(db.Businesses , "BusinessId", "Name", package.BusinessId);
        return View(package);
    }

代码在此处停止,显示以下消息:

ObjectStateManager中已存在具有相同键的对象。 ObjectStateManager无法使用相同的键跟踪多个对象。

我一直在尝试这样的例子...... http://blogs.msdn.com/b/efdesign/archive/2009/03/16/foreign-keys-in-the-entity-framework.aspx ......但我不确定我做错了什么。

如何使用外键更新实体?

1 个答案:

答案 0 :(得分:0)

[HttpPost]
public ActionResult Edit(int packageId)
{

    var package = db.Packages.FirstOrDefault(x=>x.Id == packageId);
    if(TryUpdateModel(package))
    {
        ...
        db.SaveChanges();
    }
}