在工作中,我们希望迁移到 ORM(仍在使用 ADO 的 access 数据库!)我开始使用实体框架进行构建,一切进展顺利,直到我将其分离到自己的 .dll 中(这样我们就可以拥有网站/crm /production/barcoding 系统都使用相同的数据库逻辑)。
问题来自处理 DbEntityValidationExceptions,我的初始测试代码(有效)
public override int SaveChanges(System.Data.Objects.SaveOptions options)
{
try{return base.SaveChanges(options);}
catch (DbEntityValidationException dbEx)
{
foreach (var validationErrors in dbEx.EntityValidationErrors)
{
foreach (var validationError in validationErrors.ValidationErrors)
{
Trace.TraceInformation("Class: {0}, Property: {1}, Error: {2}",
validationErrors.Entry.Entity.GetType().FullName,
validationError.PropertyName,
validationError.ErrorMessage);
}
}
//handle here
throw;
}
}
但这现在没有被抓住,我要处理一个通用的线程异常。有什么方法可以访问原始数据(强制转换 threadException?)或者我应该采取不同的方法。我想我只需要朝着正确的方向前进,我就能想出办法。
问候,皮特
更新:
嗯,调用 GetValidationErrors 有点问题。我注意到我的数据库上下文具有 ObjectContext 的基类而不是 DbContext(所以我不能调用 ValidateEntity)。我正在使用启用了默认代码生成的 Entity Framework 5 - 如果有帮助,请使用数据库优先方法。