2013-05-07 9 views
0

EF5我有一個用戶配置模型更新只有一個字段使用MVC4

public class UserProfile 
{ 

    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int UserId { get; set; } 

    [Key] 
    [Required] 
    public string EmailAddress { get; set; } 

    [Required] 
    public string Name { get; set; } 

    [Required] 
    public string Surname { get; set; } 

    [Required] 
    public string BusinessUnit { get; set; } 

    [Required] 
    public string JobRole { get; set; } 

    public bool IsEnabled { get; set; }  

    public string Password { get; set; } 
} 

我只想更新密碼字段。 這是我想

if (ModelState.IsValid) 
       { 
        var context = new JhaDbContext(); 


        using (JhaDbContext jdc = new JhaDbContext()) 
        { 
         try 
         { 
          jdc.UserProfiles.Attach(userProfile); 
          userProfile.Password = model.NewPassword; 
          jdc.SaveChanges(); 
          httpStatus = HttpStatusCode.OK; 
         } 
         catch (InvalidOperationException ioe) 
         { 
          httpStatus = HttpStatusCode.BadRequest; 
         } 
         catch (DbEntityValidationException ev) 
         { 
          httpStatus = HttpStatusCode.BadRequest; 
         }      

        }     
       } 

代碼中,我得到了DbEntityValidationException必填字段。請指導我解決這個問題。

問候 Sudheep

+0

EF只會更新更改的列。使用sql分析器來確認它。 – 2013-05-07 10:17:37

回答

1

我通常會做一個

var myEntity = jdc.(tableName).find(userID); 

然後設置

myEntity.Password = "new password"; 

jdc.Entry(userProfile).State = System.Data.EntityState.Modified; 

/ *你爲什麼把它作爲不變? * /

jdc.saveChanges() 
+0

但這樣你執行2個sql查詢,對吧? (一個用於查找,另一個用於更新)。有一種方法來執行此更新只有一個查詢? – 2013-11-02 03:34:05

相關問題