2011-02-04 9 views
0

Razorに日付を表​​示するための最善の方法を見つけるために、私はデータアノテーションを見つけました。さまざまなメタデータを追加することができますモデル。NHibernateでのDataAnnotationsの使用

私はFluent NHibernateで設定されたNHibernateを使用していますが、NHibernateは生成されたプロキシクラスに属していないようです。 (T4テンプレート?)

属性をコピーし、それを強制的にいくつかの方法があり、または私はビューで直接私のモデルクラスを使用して、代わりに何らかの方法モデルを変換するべきではありません

+0

属性は、永続性モデルではなく、ViewModelの一部である必要があります。 – Phill

+0

@ Phil、私はこれを投稿してからそれを理解しましたが、私はいくつかの意見を得る価値があると考えました。私は、AutoMapperを使っていくつかの厄介者を取り除くことを検討しています。 –

答えて

2

ビュードメインモデル(nhibernate)のクラスを別々にすることをお勧めします。 1つを別のものに翻訳するのにautomapperを使用してください。

+0

これは私がやったことです。 –

+2

はマッピングを気にしません。 Session.Query .Select(新しいViewModel)などの、セッションをクエリすることによって直接ビューモデルを構築します。それはあなたの時間と習慣の多くを保存します。 Session.Get のみを使用して、完全なドメインオブジェクトを取得して変異させます。 – mickdelaney

1

あなたはNHibernateのモデルです部分クラスを使用していますか?そうであれば、別々のメタデータクラスを作成して、データ注釈でそれらを飾ることができます。私は最近、同様の問題があり、私の質問hereにこの答えを得ました。基本的には、生成されたNHibernateクラスと同じ名前の部分クラスを作成します。次に、そのクラスと同じフィールドを持つメタデータクラスを作成し、適切に飾り付けてから、作成した部分クラスにメタデータクラスを適用します。これにより、クラスを再生成しても部分クラスは保持されず、 DataAnnotations around。

[MetadataType(typeof(PersonMetadata))] 
public partial class Person { 

} 

public class PersonMetadata { 

    [Required] 
    [Display(Name = "First Name")] 
    public string FirstName; 
} 

出典:this answer経由Austin Lamb

+0

答えが元の質問に対応しているかどうかは不明ですが、メタデータクラスはドメインとビューモデルの両方にリンクする可能性があります。 –

関連する問題