2010-12-13 29 views
1

Fluent NHibernateにはエンティティを自動マッピングする簡単な方法がありますか?C#Fluent nhibernate

はの私は、次の1とそれに対応するクラスマップのようないくつかのクラスがあるとしましょう:

public sealed class Hello 
{ 
    public String Name { get; set; } 
    public DateTime Timestamp { get; set; } 
} 

public class HelloMapping : ClassMap<Hello> 
{ 
    public HelloMapping() 
    { 
     Not.LazyLoad(); 
     // Some Id here 
     Map(x => x.Name).Not.Nullable().Length(64); 
     Map(x => x.Timestamp).Not.Nullable(); 
    } 
} 

ので、Fluent NHibernateHelloのように、すべてのマップされたエンティティを追加」のようなものを持っているのでしょうか?

もしそうでなければ、NHibernateに提供された私のマッピングを利用させる最も簡単な方法は何ですか?

答えて

3

"好き"の意味によって異なりますか?

同じ名前空間にあるすべてのエンティティを意味しますか?次にできること

public class MyConfiguration : DefaultAutomappingConfiguration { 
    public override bool ShouldMap(Type type) { 
     return type.Namespace == typeof(Hello).Namespace; 
    } 
} 

何を意味しても、達成しようとしていることを行うための大会を設定できます。 auto mapping in Fluent NHibernateを参照してください。

+0

遅延読み込みを無効にすると、プロパティは仮想である必要はありません。その場合、レイジーローディングプロキシは生成されず、プロパティには簡単にアクセスできます。または私は間違っていますか? (ちょうど知りたいです:) –

+0

@ Yippie-Kai-Yay:私はあなたが怠惰な読み込みを無効にしたことに気づいていませんでした。あなたは100%正しいです。 – jason

0

短い回答:http://wiki.fluentnhibernate.org/Auto_mapping。 FluentNHに組み込まれているオブジェクトや基本的な規則を使用して、多くのカスタム動作を必要としないオブジェクトをマップすることができます。

継承を使用して、ほとんどのクラスまたはすべてのクラスに共通の要素を持つマッピングを定義することもできます。 Say Helloは、Id、Name、Timestampを定義する基本クラスです。この基本クラスのマッピングを定義して、それから直接派生して他のオブジェクトのマッピングを生成するか、共通のテーブル構造に格納する必要があるオブジェクトに対してJoinedSubclassマッピングを定義することができます(通常はベースのさまざまなフレーバCheckingAccount、SavingsAccount、MoneyMarketAccountなどのクラスは、実質的に同じデータ構造を持つBankAccountのすべてのタイプです)。