我正在尝试更新我的实体,但它向我抛出了这个错误:
一个或多个实体的验证失败。有关更多详细信息,请参阅“EntityValidationErrors”属性。
这是我要更新的课程。
公共类产品:NotificationClass {
private string name;
private int minStock;
private Category category;
public Product()
{
Category = new Category();
User = new User();
}
public int ProductId { get; set; }
[Required]
public string Name
{
get { return name; }
set
{
name = value;
OnPropertyChanged();
}
}
[Required]
public decimal SellPrice { get; set; }
[Required]
public int MinStock
{
get { return minStock; }
set
{
minStock = value;
OnPropertyChanged();
}
}
public int Remove { get; set; }
[Timestamp]
public byte[] RowVersion { get; set; }
#region Relationships
public virtual Measurement Mesurement { get; set; }
public virtual Category Category
{
get { return category; }
set
{
category = value;
OnPropertyChanged();
}
}
public virtual User User { get; set; }
#endregion
}
我正在使用此代码进行更新:
using (MFSContext context = new MFSContext())
{
Product product = context.Products.Find(SelectedProduct.Id);
product.Name = "Frank";
context.Entry(product).State = EntityState.Modified;
try
{
context.SaveChanges();
}
catch (DbEntityValidationException dbEx)
{
Exception raise = dbEx;
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
string message = string.Format("{0}:{1}",
validationErrors.Entry.Entity.ToString(),
validationError.ErrorMessage);
// raise a new exception nesting
// the current instance as InnerException
raise = new InvalidOperationException(message, raise);
}
}
throw raise;
}
context.SaveChanges();
LoadCategories();
}
我看到其他帖子推荐使用 try catch 但问题是当我运行项目时抛出这个异常“密码字段是必需的”,问题是我正在上传产品实体......该属性属于用户实体所以我不明白。
PD:抱歉我的英语不好。
您的产品实体正在创建一个用户实体。User 实体可能继承自需要密码的 Identity 类。对于插入,您需要使用 UserManager 来添加用户,但由于这是一个更新,因此您需要做的就是在更新之前获取附加到产品的现有用户:
Product product = context.Products.Include(p => p.User).Single(p => p.ProductId == SelectedProduct.Id);
product.Name = "Frank";
context.SaveChanges();
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句