1

私は次のように2つのエンティティを持っています:

 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 に答える