4

是否可以清除与实体框架关联的 ObjectContext 中的验证结果?我想要的是这样的代码:

public void ClearValidationResults (ObjectContext db)
{
        var dbContext = new DbContext(db, true);

        var validationResults = dbContext.GetValidationErrors();

        validationResults.Clear();
}

我想实现此功能以在单元测试中使用来测试验证规则,而不必在数据库中保存更改。谢谢。

4

3 回答 3

5

DbContext不存储验证错误,它会在您每次调用DbContext.GetValidationErrors()或时验证实体DbContext.SaveChanges()。因此,如果您有一个由您的上下文跟踪的无效实体,DbContext.GetValidationErrors()将始终返回错误。您需要分离或修复无效的实体/实体,并且错误将消失,因为您的上下文不会跟踪任何无效实体。

于 2013-09-13T16:54:20.693 回答
3

清除实体本地存储。

当我们将实体添加到集合时,它会将其添加到其本地存储中,并且由于该实体的本地存储不清楚并且仍然有旧条目,因此我们不断收到错误消息。所以你清除实体本地行。

dbContext.EntityName.Local.Clear();

于 2014-04-23T12:24:51.937 回答
-3

每次我需要清除验证错误时,我都会通过创建一个新的 ObjectContext 对象来解决问题。不是最优雅的解决方案,但它有效。由于这个过程是在单元测试的上下文中,并且单元测试足够快,所以我将维护这个代码,直到最好的解决方案出现。

public void ClearValidationResults (ObjectContext db)
{
    db =  new MyObjectContext();
}
于 2013-09-16T09:00:53.727 回答