1

我有两个实体如下:

 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; }
    }

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

    [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。 ..但我不确定我做错了什么。

如何使用外键更新实体?

4

1 回答 1

0
[HttpPost]
public ActionResult Edit(int packageId)
{

    var package = db.Packages.FirstOrDefault(x=>x.Id == packageId);
    if(TryUpdateModel(package))
    {
        ...
        db.SaveChanges();
    }
}
于 2013-01-24T07:38:09.060 回答