2011-12-16 24 views
4

の違いは何である私はDataAccessLayerを作成する必要があるために、既存のデータベースを持っている流暢NHibernateは記事のいくつかを読んだ後流暢マッピングと流暢NHibernateはで自動マッピング

を開始する場所から混乱しました。私はNHibernateとFluentNhibernateの新人です。 hbm.xmlファイルを書く必要がないことを理解したので、私はFluent Nhibernateを選びました。

ですから、FluentMappingとは何ですか?とオートマッピング?

私はclassLibraryProjectという名前FirstProject.Entities私は

namespace FirstProject.Entities 
{ 
public class Customer 
{ 
    public virtual int CustomerID { get; set; } 
    public virtual string CustomerName { get; set; } 
    public virtual string Address1 { get; set; } 
    public virtual string Address2 { get; set; } 
    public virtual string City { get; set; } 
    public virtual string State { get; set; } 
    public virtual int Zip { get; set; } 
} 
} 

は、その後、私はマッピングクラス

namespace FirstProject.Entities 
{ 
public class CusotmerMap : ClassMap<Customer> 
{ 
    public CustomerMap() 
    { 
     Id(x => x.CustomerID).Column("CustomerID").GeneratedBy.Assigned(); 
     Map(x => x.CustomerName); 
     Map(x => x.Address1); 
     Map(x => x.Address2); 
     Map(x => x.City); 
     Map(x => x.Zip);   
    } 
} 
} 
私は今ドン

」を作成し、 "顧客" という名前のクラスを作成した

を作成しましたさらに進める方法を知っている。私は右のそれをやっている..設定する方法

を示唆してお進みくださいさらに

答えて

1

次は、私は、次の

actual.Should().BeGreaterThan(1).And().LessThan(2); 

流暢のように、流暢アサーションを使用流暢

Id(x => x.CustomerID).Column("CustomerID").GeneratedBy.Assigned(); 

です基本的にコマンドを連鎖させて、かなり読みやすいようにしています。

自動マッピングは何もしません。すべてが慣習によって行われます。私はAutoを使う傾向がある。慣習に従わなければ流暢でいいです。

マッピングに基づいて、割り当てられているCustomerIdは、すぐに使用できる規約ではありません。そのように、あなたはどちらかに

  1. 使用流暢それはマップする必要があります正確にどのように指定する必要があります。これはXMLの標準的な方法と同じですが、の流暢なインターフェイスを使用しています。
  2. 自動を使用して、コンベンションを指定すると、自動的に得意先コードが割当対象に変更されます。
  3. 自動を使用し、を上書きしますが、Autoを使用しますが、割り当て対象のCustomerIdを上書きします。を指定します。

あなたはオプション3を行いたい場合は、ここでのコードは次のとおりです。

var model = AutoMap 
    .AssemblyOf<Customer>() 
    .Where(IsMapped) 
    .Override<Customer>(a => a.Id(b => b.CustomerId, "CustomerId").GeneratedBy.Assigned()); 

機能IsMappedあなたがマップするエンティティのためにtrueを返さなければなりません。

+0

説明ありがとうございました。あなたがオートマップと言うとき、Nhibernateによってデータベーステーブルが作成されますか?私はすでに既存のデータベースを持っているので、すべてのテーブルがIDキーですでに作成されているため、NHibernateを介してDataAccess Layerを作成するだけで済みます。このシナリオではオプション1が適していると思いますか? – user1096623

+0

Fluent NHibernateに関する書籍もあります。私は見つけられなかった – user1096623

+0

私が気づいていない。私はウェブサイト上のドコを読んでそれを学びました。 – Iain

関連する問題