1

Entity FrameworkでPOCOクラスを使用するwpfアプリケーションで、データの検証を実行するための最良の方法は何ですか。私はデータ注釈を知っていますが、私が完全に間違っていなければ、それらはWPFよりもASP.Net MVCで使用されます(WPFで多くの例を見つけられませんでした)。以前、ドメインクラスにIDataErrorInfoインターフェイスを実装させていましたが、これが正しいアプローチであるかどうかはわかりませんでした。後の段階でEntityFrameworkクラスをSilverlightアプリケーションやASP.NETアプリケーションなどと共有したい場合は、検証ルールを再利用できるようにするための最善のアプローチは何でしょうか。(ASP.netを使用すると、エラーを処理するIDataErrorInfoの方法は役に立たないと思いますか?)同様の質問をたくさん見つけることができますが、特に私のニーズを満たすものは見つかりません。誰かが私を正しい方向に向けることができれば素晴らしいです

ドメインモデルでT4テンプレートを使用してPOCOクラスを生成し、これらのPOCOクラスオブジェクトをビジネスオブジェクトとしても使用しています。

4

2 に答える 2

1

デフォルトでは、WPF Validation はバインディングで IDataErrorInfoand/orを使用します。追加のロジックを結び付けて値が有効であることを確認する方法を提供する部分クラスであり (IE: Person.Age プロパティは 1 ~ 100 です) 、値が適用される前に値を検査できます。バインディング (IE: Person.Age プロパティは整数です)。 バインディングの値が互換性のあるデータ型で更新された場合にのみ明らかに役立ちます.Ageテキストボックスに誰かが10ではなく「10」と入力し、データ型に互換性がない場合に役立ちます.ValidationRuleIDataErrorInfoValidationRuleIDataErrorInfoValidationRule

IDataErrorInfoすべての WPF/Silverlight/ASP.NET プロジェクトで再利用可能です (参照: ASP.NET で IDataErrorInfo を使用する方法)

一方ValidationRule、 はバインディングと共に使用されるため、ASP.NET プロジェクトでは役に立ちません。これらは、Javascript の検証と同等と見なすことができます。

要するに、IDataErrorInfoまさにあなたが探しているものであり、それらのテクノロジーを最大限に再利用できます。

于 2012-05-30T22:23:59.417 に答える
0

IDataErrorInfo は、EF 検証ではそのままではサポートされていません。注釈は検証だけでなく、モデルの定義にも使用できます (例: Required、MaxLength、StringLength 属性など)。追加設定なしで、ValidationAttribute から派生させて独自の属性を記述したり、CustomValidationAttribute を使用したり、IValidatableObject を実装したりして、いくつかのメカニズムを使用してエンティティを検証できます。それが、EF がすぐにサポートするものです。これらのいずれも機能しない場合は、DbContext.ValidateEntity() メソッドを上書きして組み込みの検証を置き換え、適切な検証メカニズムを使用できます。いくつかの便利なリンク: http://blogs.msdn.com/b/adonet/archive/2010/12/15/ef-feature-ctp5-validation.aspx http://blogs.msdn.com/b/adonet/アーカイブ/2011/05/27/ef-4-1-validation.aspx

于 2012-05-30T22:36:13.463 に答える