0

我使用從這裏該代碼示例.. http://msdn.microsoft.com/en-us/data/gg685489EF4.1和4.3 - 問題MVC示例項目

[HttpPost] 
    public ActionResult Edit(int id, Blog blog) 
    { 
     try 
     { 
      using (var db = new BlogDataEntities()) 
      { 
       db.Entry(blog).State = System.Data.EntityState.Modified; 
       db.SaveChanges(); 
       return RedirectToAction("Index"); 
      } 
     } 
     catch 
     { 
      return View(); 
     } 
    } 

我有在執行上面的代碼中的困難 - 該示例假設使用EF 4.1和我是在舊版本。我後來將我的EF版本升級到4.3,但我仍然無法做到這一點。我訪問了nuget包並從那裏安裝它。我檢查了引用和EF版本被確認爲4.3 ...即使在新的EF安裝後,intellisense不會顯示「db.entry」選項....任何人都可以告訴我,如果我錯過了另一個走在這裏...謝謝你。

+1

您是否在教程中添加了代碼生成模板?這聽起來像你沒有使用基於DbContext的上下文。 – 2012-02-27 20:54:48

+0

是的。你是對的。謝謝 – ZVenue 2012-02-27 21:11:10

回答

1

如果您不使用Code First,則默認的數據上下文是ObjectContext(而不是您的代碼旨在使用的DbContext)。如果你正在使用的ObjectContext那麼你要做到這一點,而不是:

http://msdn.microsoft.com/en-us/library/bb896248.aspx

不過我建議你的模型中右擊並「添加代碼生成項目」,並添加的DbContext模板。然後,這會將您的對象上下文轉換爲dbcontext,並允許您在嘗試對其進行編碼時訪問條目。任何一個都可以工作,但DbContext有一個更容易處理的API。

+0

的理解,但是當與上面的項目一起提到OP沒有使用代碼模板時,我認爲這很明顯。我看到過去的帖子看起來頗爲冒犯 - 所以認爲你在這裏的態度是一樣的。如果不是這樣,我很抱歉。我會很快刪除這些評論,因爲其他人不需要看到這個咆哮。 – 2012-02-28 01:46:42