4

簡単な質問ですが、Fluent APIは、機能の観点からデータアノテーションに置き換えられますか?Fluent APIに含まれていないデータ注釈の機能は何ですか?

関心の分離(モデルと永続性の間)、設定より規約(マッピングは1つの場所で定義されますDbContext.OnModelCreating()が、すべてのモデルプロパティでは定義されない)のためにFluent APIを使用し、VS2010レイヤー検証を使用してPOCOクラスを確認したいEFに依存することはありませんが、ソースからデータ注釈を完全に削除すると、何が失われますか?

4

2 に答える 2

1

FluentValidation.NETは、データ注釈などの全範囲の機能を提供します。したがって、データ注釈の代わりにFVを使用すれば、何も見逃すことはありません。

于 2012-10-19T06:07:40.750 に答える
1

これは、POCOクラスをEFから完全に分離したいためです(私のリポジトリとUoWパターンにより、ktをNHibernateに移動できるようになります)。

Fluent API>データアノテーション、つまりFluent APIは、データアノテーションよりも多くの機能を備えており、テーブルのマッピングと関係の作成に役立ちます。ただし、Fluent APIには、、、およびを使用したラベルと検証が@Html.LabelForあり@Html.EditorForません。これが私を頭痛の種にしているものです。[Display(Name:=...)][DisplayFormat(DataFormatString=...)][Required(ErrorMessage=...)]

今、そのアイデアを見つけました:

  1. データレイヤーでFluentAPIを使用しているため、私のモデルは実際にはPOCOクラス(POCOプロジェクト)であり、dllはこのサービスにサブスクライブするWCFやその他のプロジェクトで使用できます。

  2. ViewModelにデータ注釈を使用します。これはUIレイヤー内にのみ存在し、ViewModelはMVCビューを除いて他のプロジェクトと共有されることはないため、データ注釈属性を使用してもかまいません。

  3. (1)で作成した制約を(2)likeandにやり直し[Required]ます[MaxLength]。ViewModelとドメインモデルは分離する必要があり、ある程度関連しているとは思いますが、相互に関連していないため、DRYの原則を繰り返して揮発させる価値があると言う人もいますMaxLength(ほんの少し繰り返して、nに対しては問題ないはずです)。 -層アーキテクチャ+静的クラスとconstを使用して、両側の長さを同じにすることができます)。

于 2012-10-21T22:04:51.867 に答える