我有一个示例网络应用程序,我正在写,我很困惑为什么我得到这个
属性“Id”是对象关键信息的一部分,无法修改。
当我没有更新'Id'时?
好的,所以这就是我想要做的。
我有2个表主题和帖子 -
我正在更新帖子,以便每当我需要显示对该主题所做的最后一篇帖子时 我不需要对“此主题中的所有帖子按日期排序”。 应该有更好的方法来做到这一点..
当我调试时,我看到了 主题类别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 :(得分:3)
这是因为TryUpdateModel尝试更新所有发布的值。因此,如果您有一个或多个不想更新的值,则必须手动执行此操作。
例如:
TryUpdateModel(updateTopic, "", null, new string[] { "Id" });
我猜测名为“ID”的一个属性也会提交到此操作中,从而导致错误。