在MVC4中使用EF5仅更新单个列



我有一个UserProfile模型

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

我通常会写

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

then set

myEntity.Password = "new password";
jdc.Entry(userProfile).State = System.Data.EntityState.Modified; 

/*为什么它是不变的?* /

jdc.saveChanges()

最新更新