我正在开发一个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.
但是,如果我不更新用户角色,它可以正常工作。
请你帮帮我吗?
答案 0 :(得分:1)
您可以使用“排除”属性列表调用TryUpdateModel - 如果适合您的方案,则只需排除ID属性。
e.g。
TryUpdateModel(user, null, null, new [] { "Id"} )