DBEntityValidationException

DBEntityValidationException

我正在一个 winforms 应用程序中实现 EF 5,并且我将上下文 (DBContext) 保存在表单的私有(private)字段中。

我尝试添加一个实体,因为它有一些无效的属性,所以我得到一个 DBEntityValidationException。然后,我将这些属性设置为有效值并尝试再次添加它,我收到完全相同的 DBEntityValidationException。

我想知道我是否需要清除任何东西?这是代码。

private SystemEntities _context = new SystemEntities(); // class field

try
{
    Customer customer = ... // set properties here
    _context.Customers.Add(customer);
    _context.SaveChanges();
}
catch (DBEntityValidationException ex)
{
    // get exception even though properties are updated with valid values
}

我在更新实体时没有观察到这个问题。非常感谢。

最佳答案

这些评论为我指明了正确的方向。我没有尝试保存更改并捕获异常,而是首先获取验证结果:

var results = new List<ValidationResults>();
Validator.TryValidateObject(entity, new ValidationContext(entity, null, null), results, true);

问题在于它实际上是将无效实体添加到集合中,因此它在后续尝试中不断抛出异常。谢谢!

关于c# - DBEntityValidationException 不是 "cleared",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14716452/

10-11 07:28