質問

わかりました 私はまだEF 4.0のスキーマモデルを使用したいと思っています。 ただし、EF 4.1のAPIと柔軟性も必要です。

そのため、アプリケーションでは、現在のEF 4.0モデルからDBContext生成コードを追加しました。

さて、私の質問は、DBSET(EF 4.1)モデルを拭かないでください。

Data Annotationは、視覚モデルを更新するたびに、すべての変更を完了するため、それをカットしていないようです。

  • 私は部分的なクラスについて聞いたことがありますが、それは本当に厄介なようです。
  • 私は本当に自分のコントローラーで検証をしたくありません。
  • クラスをASP.NET MVCからWPFなどに簡単に転送できるように、これをスケーラブルにしたいです。

これを行う方法はありますか?検証リポジトリ?分離検証層?リポジトリレイヤー内の検証?例も大歓迎です。

私を助けてください。ありがとう :)

役に立ちましたか?

解決

テンプレートジェネレーターを使用すると、次のいずれかを実行することが可能です。

  1. 各エンティティのバディクラスを作成し、テンプレートでコンベンションを命名してバディクラスを定義します。
  2. それらを別のソースなどに保存することにより、データアノテーションを作成する方法を把握します。

または、別のレイヤーを使用します。リポジトリを使用している場合は、そこに検証を埋め込むことができます。私は、エンティティ(静的または動的に)と一致するルールを引き込むORM検証工場を用意することを選択しました。工場は作業を行います(それは特異な責任の原則の方針に沿っているからです)。

Hth。

他のヒント

私のプロジェクトでは、4.1と4.0の両方のコンテキストをミックスします。遅い移行を行うことができます。また、Visual Studioに追加できるエンティティフレームワーク4.1リバースエンジニア拡張機能もあります。 (既存のデータベースからPOCOオブジェクト +マッピングを生成するコードで4.1を使用できるようにします)。

EDMX生成モデルを4.0から公開するDBContextを作成することはお勧めしません。また、ObjectContext/DBContextを継承し、プロパティを継承する(行バージョン、ECT)、POCOオブジェクトの制御の利点(4.0のように部分的なメタデータタイプ属性を心配する必要がないため)

EF4.0で作成されたスキーマの検証に関する質問:

モデルを更新するときにデータアノテーションが完全に拭かれないようにするため、メタデータ型属性を使用する必要があります。

http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadatatypeattribute.aspx

これには例があります

なぜMSがプログラマーにそのような悪い慣行を教えているのかわかりません。特に、EF 4.1でマッピングするためのデータアノテーションを使用することは、本当に愚かな設計決定でした(たとえば、Mappingと検証を明確に分離するために設定されたLinq-to-SQLを使用して設定されました)。

データアノテーションは、ユーザー入力からのデータを検証するために使用され、ユーザー入力はビュー /コントローラー関連のものです。各ビューでは異なる検証ルールが必要です。

ビューとエンティティが1:1である最も単純なケースでは、データアノテーションを直接使用できますが、これは実際に最も単純なアプリケーション用であり、このような簡単なアプリケーションを実行すると、ASP.NETダイナミックデータを直接使用し、フレームワークをすべてのページを作成できるようにすることができます。エンティティモデルに基づいて。

ASP.NETダイナミックデータは、生成されたエンティティにデータアノテーションを適用する方法も示しています バディクラス.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top