0

私はEntityFrameworkを使用しており、T4を介してPOCOクラスを生成しています-これらのクラスは何も継承せず、非常に単純で単純です(vs 2010でテンプレートを介して作成されました)

バディクラスを作成できるようにMetadatatype属性を使用しようとしましたが、これを実行すると、プロパティを表示できなくなりました...属性を削除すると!プロパティが表示されました。

とにかく、もっと深く検索すると、Microsoftからのこのステートメントが見つかりました

The associated class must be used with EDM or LINQ-to-SQL models because CLR 
types cannot mark existing properties with new attributes. If you are working with CLR
objects directly, sometimes referred to as Plain Old CLR Object (POCO) types, you can
apply the attributes directly to the model

それで、それは機能しないように見えますか?とにかく、データ注釈をモデル自体に挿入するのは非常に困難です。データ注釈はT4を介して作成されているため、編集してからツールを再実行すると、すべての変更が削除されます。

誰かがこれを機能させることができましたか?

私は本当に苦労しています。

4

1 に答える 1

2

SO と MVC ブロゴスフィアに関しては、business/crud/domain クラスに属性で注釈を付けるべきではないというかなり強いコンセンサスがあります。MVC スタック全体がビジネス/データベース クラスに依存するようになるだけでなく、単一のモデルだけでは検証できない複数のコンテキスト シナリオ (同じモデル、異なる検証ルール) がすぐに発生します。

画面に個別のビュー モデルを使用し、それらに注釈を付けます。


あなたのコメントに基づいて:「T4を介して作成されたため、モデル自体のデータ注釈」

私が言おうとしているのは、データ注釈をビューモデルに配置し、POCO モデルをそのままにしておくことです。

于 2010-11-04T12:47:51.070 に答える