2012-07-08 96 views
0

我正在開發一個asp.net mvc 3.0應用程序,並將EF 4.1用於我的數據訪問層和工作單元模式。屬性'Id'是對象的關鍵信息的一部分,無法修改

這裏是我的模型:

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

的可能重複的[屬性「ID」是對象的密鑰信息的一部分並且不能被修改(http://stackoverflow.com/questions/5820285/the-property-id-is-part-對象密鑰信息和不可修改) – 2012-12-06 12:55:37

+0

我想我找到了答案!我嘗試使用包含屬性列表TryUpdateModel,它爲我工作。 – 2012-07-08 08:35:27

回答

1

您可以使用「排除」屬性列表調用TryUpdateModel,並且僅在適合您的方案的情況下排除ID屬性。

例如

TryUpdateModel(user, null, null, new [] { "Id"}) 
相關問題