3

我有我寫一個簡單的Web應用程序,爲什麼我得到即時困惑這個屬性「ID」是對象的關鍵信息的一部分,不能被修改

屬性「ID」是的一部分該對象的關鍵信息無法修改。

當我不更新'Id'?

好的,所以這就是我想要做的。

我有2個表主題和郵電 -

  1. 用戶創建一個新的話題,應該在數據庫
  2. 上添加主題記錄獲取主題ID,並設置標識,以郵政的TopicId
  3. 獲得該職位的ID,並將其設置爲主題的LastPostId

我重新更新的帖子所以每當我需要顯示的話題 我不需要牛逼所做的最後一個職位o按照該主題中的所有帖子排序「。 應該有更好的方式來做到這一點..

當我調試我看到 主題類別ID被設置爲主題ID 我並不在我的更新代碼有。

// 
     // insert new topic to database 

     Topic topic = new Topic(); 

     topic.CategoryId = int.Parse(RouteData.Values["id"].ToString()); 
     topic.Title = postModel.Title; 

     topicRepo.Add(topic); 
     topicRepo.Save(); 

     // 
     // insert post to database 
     PostRepository postRepo = new PostRepository(); 
     Post post = new Post(); 

     post.TopicId = topic.Id; 
     post.Body = postModel.Body; 

     string strUserId = UserAccount.FormatUserName(User.Identity.Name); 

     post.CreatedByUser = strUserId; 
     post.CreationDate = DateTime.Now; 

     postRepo.Add(post); 
     postRepo.Save(); 

     // *********************** 
     // update topic last post 
     // *********************** 
     Topic updateTopic = topicRepo.GetTopic(topic.Id); 
     updateTopic.LastPostId = post.Id; 

     TryUpdateModel(updateTopic); 
     if (ModelState.IsValid) 
      topicRepo.Save(); 

謝謝!

+0

異常在哪裏發生?我猜它是在postRepo.Save()或topicRepo.Save()中。我們可能需要查看更多代碼。 – 2011-04-28 14:40:07

+0

它發生在TryUpdateModel(updateTopic)中。我看到EF將Id(14)設置爲8(categoryId),這很奇怪。 – 2011-04-28 14:58:23

+0

你可以發佈postModel和Topic類嗎? – 2011-04-28 15:08:37

回答

3

發生這種情況是因爲TryUpdateModel嘗試更新所有發佈的值。因此,如果您有一個或多個不想更新的值,則必須手動執行此操作。

例如:

TryUpdateModel(updateTopic, "", null, new string[] { "Id" }); 

我猜測,名爲「ID」一個屬性也提交到這個動作,導致錯誤。

+0

謝謝!它像一個魅力! – 2011-04-28 15:52:13

+0

但是,如果修改的ID是模型屬性的ID屬性,並且我想修改引用屬性爲具有所述ID的那個?示例: class A {int ID; B道具;} class B {int ID; } 我想保存一個對象引用id = 2的對象B而不是id = 1的對象???我想改變a.b.ID ... – billy 2011-11-11 15:12:46

+0

嗯,我實際上不得不看代碼。但從我的頭頂我認爲你可以這樣做:TryUpdateModel(updateTopic,「」,null,new string [] {「B.Id」}); – Francisco 2011-12-16 14:35:33

相關問題