2012-06-17 124 views
0

我想在用戶註冊後將數據保存到我的數據庫。我在帳戶控制器的Registerfunctin中編寫代碼。代碼是:無法將數據保存到asp.net中的數據庫mvc3

[HttpPost] 
     public ActionResult Register(RegisterModel model) 
     { 
      if (ModelState.IsValid) 
      { 
       // Attempt to register the user 
       MembershipCreateStatus createStatus; 
       Membership.CreateUser(model.UserName, model.Password, model.Email, null, null, true, null, out createStatus); 

       if (createStatus == MembershipCreateStatus.Success) 
       { 
        FormsAuthentication.SetAuthCookie(model.UserName, false /* createPersistentCookie */); 
        ///My code for saving in dtabase 
          Recommend ad = new Recommend();  
          ad.estate = 1; 
          ad.industry = 1; 
          storedb.AddToRecommends(ad);   
          storedb.SaveChanges(); 
        /// 
        return RedirectToAction("Index", "Home"); 
       } 
       else 
       { 
        ModelState.AddModelError("", ErrorCodeToString(createStatus)); 
       } 
      } 


      // If we got this far, something failed, redisplay form 
      return View(model); 
     } 

推薦是我想在房地產和行業專欄中存儲1的表的名稱。我用這樣的方式在另一個控制器befor節省,一切都OK,但現在我得到這個異常:

Exception

有誰能夠告訴我什麼問題? 非常感謝

+1

您是否使用StoredProcedure來處理此推薦表的添加和更新? –

+0

你可以在這裏粘貼「複製異常詳細信息到剪貼板」的細節嗎?這些信息通常更有幫助。你也可以粘貼你的桌子設計圖片嗎? – Sparkle

回答

2

唯一的例外是相當清楚的問題是什麼:該EntitySet的Recommend和類型RecommendDefining Query定義。這意味着它是在EDMX文件的商店模式中指定的SQL查詢的結果。這與從數據庫映射視圖類似,即它是隻讀的,並且不能更新它,不能將數據插入到數據集中,也不能從中刪除數據。

雖然可以通過map Stored Procedures對定義查詢定義的實體的插入,更新和刪除操作,但該例外還說沒有過程被指定爲支持插入操作。

你說的是Recommend,所以問題是爲什麼Recommend集不直接映射到此表。據我所知,定義查詢必須由開發人員手動編寫並手動輸入到EDMX文件中。 「從數據庫更新模型」不會創建定義查詢。誰寫了這個查詢?你是怎麼創建EDMX文件的?數據庫 - 首先或模型 - 首先或手寫的XML或...?

編輯

在回答最後一段以上是不正確的。它是可能開發人員可能已經手動編寫了定義查詢,但是當您使用數據庫優先方法(我認爲)更多可能是您的數據庫中的表沒有主鍵。在這種情況下the answer here適用:

那麼如果一個表沒有它被視爲 一個視圖中的PrimaryKey遇到。

和視圖顯示在EDMX文件中 的StorageModel \ EntitySet的[N] \ DefiningQuery元素(在XML編輯器,看看打開)。

解決方案:檢查數據庫中您的Recommend表是否有主鍵。如果它沒有密鑰,請添加一個密鑰。