職場では、ORMへの移行を検討しています(引き続きADOでアクセスデータベースを使用しています!)エンティティフレームワークを使用して構築を開始し、独自の.dllに分離するまですべてが順調に進んでいました(Webサイト/ CRMを使用できるようになりました)。 / product / 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を処理することになります。元のデータにアクセスする(threadExceptionをキャストする)方法はありますか、それとも私が取るべき別のアプローチがありますか?私は正しい方向にプッシュする必要があると思います、そして私は何かを理解することができます。
よろしく、ピート
アップデート:
GetValidationErrorsを呼び出す際の問題です。データベースコンテキストにDbContextではなくObjectContextのbaseClassがあることに気付きました(したがって、ValidateEntityを呼び出すことはできません)。デフォルトのコード生成が有効になっているEntityFramework5を使用しています。それが役立つ場合は、データベースファーストアプローチを使用します。