2013-01-24 86 views
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 ...但我不知道我在做什麼錯。

如何更新與外鍵的實體?

+0

這個問題與2個月前發佈的這個問題很相似。請看看這個.. http://stackoverflow.com/questions/13311652/object-with-same-key-already-exists-in-objectstatemanager – bot

回答

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

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

我嘗試過了,得到了一個錯誤信息:實體類型DbQuery'1不是當前背景下的模型的一部分。 – CloudyKooper

+0

@CloudyKooper對不起,我編輯了我的問題,試試吧 – karaxuna

相關問題