属性“Id”是对象的关键信息的一部分,无法修改

时间:2012-07-08 08:26:56

标签: asp.net-mvc-3 entity-framework

我正在开发一个asp.net mvc 3.0应用程序,并使用EF 4.1作为我的数据访问层和工作单元模式。

以下是我的模特:

 public class UpdateUserViewModel
    {
        public User User { get; set; }
    }

public partial class Role
    {
        public int Id { get; set; }

     }


    public partial class User
    {
        public Guid Id { get; set; }

        public virtual Role Role { get; set; }
    }

我将UpdateUserViewModel传递给视图,然后将视图中的表单发布到以下操作:

public ActionResult UpdateUser(User user)
        {
            var userObj = unitofwork.UserRepository.GetByID(user.Id);

            TryUpdateModel(userObj, "User");

            userObj.Role = unitofwork.RoleRepository.GetByID(user.Role.Id);

            unitofwork.UserRepository.Update(userObj);

            unitofwork.Save();
        }

当我在视图中更新用户角色(它是下拉列表)并尝试更新它时,问题会引发。它给了我以下错误:

The property 'Id' is part of the object's key information and cannot be modified. 

但是,如果我不更新用户角色,它可以正常工作。

请你帮帮我吗?

1 个答案:

答案 0 :(得分:1)

您可以使用“排除”属性列表调用TryUpdateModel - 如果适合您的方案,则只需排除ID属性。

e.g。

TryUpdateModel(user, null, null, new [] { "Id"} )