PDA

View Full Version : error SaveChanges();



khorzu.khan
سه شنبه 09 تیر 1394, 10:37 صبح
سلام دوستان .
برنامه ای نوشتم که دارای ویرایش کاربر است .
من وقتی توو بخش ویرایش کاربر اطلاعات رو تغییر میدم و روی دکمه save کلیک میکنم با ارور زیر مواجه می شم .

Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.

جالب اینجاس که وقتی annotations های مربوط به ConfirmPassword رو در کلاسم حذف میکنم برنامه دیگه ارور نمیده .

کلاسم رو بصورت زیر تعریف کردم :



public partial class UsersTable
{
public UsersTable()
{
this.MenusTable = new HashSet<MenusTable>();
}

public int UserId { get; set; }
[Required(ErrorMessage = "لطفا این قسمت را پر کنید .", AllowEmptyStrings = false)]
public string UserName { get; set; }
[Required(ErrorMessage = "لطفا این قسمت را پر کنید .", AllowEmptyStrings = false)]
[DataType(System.ComponentModel.DataAnnotations.Dat aType.Password)]
[StringLength(50, MinimumLength = 6, ErrorMessage = "کلمه عبور باید بین 6 تا 50 کاراکتر باشد .")]
public string Password { get; set; }
[Required(ErrorMessage = "لطفا این قسمت را پر کنید .", AllowEmptyStrings = false)]
[DataType(System.ComponentModel.DataAnnotations.Dat aType.Password)]
[System.Web.Mvc.Compare("Password", ErrorMessage = "کلمه عبور وارد شده همخوانی ندارد .")]
public string ConfirmPassword { get; set; }
[Required(ErrorMessage = "لطفا این قسمت را پر کنید .", AllowEmptyStrings = false)]
public string FirstName { get; set; }
[Required(ErrorMessage = "لطفا این قسمت را پر کنید .", AllowEmptyStrings = false)]
public string LastName { get; set; }

public virtual ICollection<MenusTable> MenusTable { get; set; }
}


وسمت کنترلر :



[HttpPost]
public ActionResult EditAccount(UsersTable user)
{
user.UserId = Convert.ToInt32(Session["LogedUserId"]);




if (user.Password == user.ConfirmPassword)
{
UserRepository _UR = new UserRepository();
_UR.Update(user);
return View(user);
}
else
return PartialView("_SetPasswordPartial");






و قسمت repository :



public void Update(UsersTable user)
{
var selectUser = _db.UsersTable.FirstOrDefault(M => M.UserId.Equals(user.UserId));
selectUser.FirstName = user.FirstName;
selectUser.LastName = user.LastName;
selectUser.UserName = user.UserName;
selectUser.Password = user.Password;


Save();
}

private void Save()
{
_db.SaveChanges();
}





کسی میدونه این اشکال برای چیه ؟

r4hgozar
سه شنبه 09 تیر 1394, 13:14 عصر
واسه آپدیت اول مدل رو پر کن و بعد پاس بده به متد edit با دستور زیر


public bool Edit(Estate model)
{
try
{
_db.Entry(model).State = EntityState.Modified;
_db.SaveChanges();
return true;
}
catch
{
return false;
}
}

anubis_ir
سه شنبه 09 تیر 1394, 14:15 عصر
يك try/catch بنويس (http://www.dotnettips.info/post/866/%d8%a7%d8%b3%d8%aa%d8%ab%d9%86%d8%a7%d9%87%d8%a7%d b%8c%db%8c-%da%a9%d9%87-%d8%a8%d8%a7%db%8c%d8%af-%d8%ad%db%8c%d9%86-%d8%a7%d8%b3%d8%aa%d9%81%d8%a7%d8%af%d9%87-%d8%a7%d8%b2-ef-code-first-%d8%a8%d8%b1%d8%b1%d8%b3%db%8c-%d8%b4%d9%88%d9%86%d8%af) تا مشخص بشه اين خطا دقيقا چه منشاءايي داشته؟