一个或多个实体的验证失败加上其他错误

弗兰克·佩纳

我正在尝试更新我的实体,但它向我抛出了这个错误:

一个或多个实体的验证失败。有关更多详细信息,请参阅“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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用XSD验证一个或多个其他元素

更改默认帐单地址的街道地址时,“对一个或多个实体的验证失败”错误

一个或多个实体的验证失败。在模型中添加验证

对可为null的布尔属性的Entity Framework中的一个或多个实体的验证失败

System.Data.Entity.Validation.DbEntityValidationException:'一个或多个实体的验证失败

如果一个失败,Rails会跳过其他验证

告诉一个实体,是否也有一个属于其他实体的实体

一个或多个实体的验证失败。有关更多详细信息,请参见“ EntityValidationErrors”属性

一个或多个实体的验证失败。有关更多详细信息,请参见EntityValidationErrors属性。

“针对一个或多个实体的验证失败。有关更多详细信息,请参见'EntityValidationErrors'属性。”

如何为其他实体的OneToMany共享一个实体

错误:-一个或多个模型未通过验证

获取 {"一个或多个实体的验证失败。有关更多详细信息,请参阅 'EntityValidationErrors' 属性。"} 使用一个示例,而不是另一个示例

一个或多个实体的MVC5验证失败。有关更多详细信息,请参见“ EntityValidationErrors”属性

将多个图像上传到服务器。如果只有一个图像大于大小限制或错误的文件扩展名,则所有其他图像均将失败

一个失败的测试会导致其他异步测试失败

错误“一个实体对象不能被IEntityChangeTracker的多个实例引用。” :如何正确更新子实体?

实体框架核心接受一个并跳过表中的其他重复项

Doctrine 查询一个实体在其他表上出现的次数

sqlalchemy.exc.InvalidRequestError:一个或多个映射器初始化失败-无法继续进行其他映射器的初始化

取一个懒惰的OneToOne实体获取同一物体内的每一个其他OneToOne实体

将多个文件从一个目录复制到多个其他目录

Codeigniter:如何在一个类中访问多个其他函数的多个变量?

放在一个字段中,将其他字段的值放在一行中,并加上一些多余的文字

实例化一个 cxf 服务会导致其他无关服务的注入失败

C#:如果一个线程失败,则终止其他线程

当一个失败时,redux saga产生所有抵消其他效果

如果第一个配置失败,则从其他配置发送邮件 laravel

错误:项目创建失败。您指定的项目 ID 已被另一个项目使用。请尝试其他 ID