3

私は学ぼうとしていますNHibernate 3.2 built-in mapping by code apiFluent NHibernateではありません)。これらのエンティティ間の1 対 1 (またはゼロ)の関係をマッピングするのを手伝ってくれませんか?

注:私は質問をグーグルで検索し、SOFも検索しました。すべての例はFluent APIまたはXMLを使用しています。NHibernate 3.2 で組み込みのマッピング API を使用しようとしています。

public class Person { 
    public virtual int Id { get; set; }  
    public virtual string FirstName { get; set; } 
    public virtual string LastName { get; set; } 

    // can be null 
    public virtual Address Address { get; set; }
} 
 
public class Address { 
    public virtual int Id { get; set; } 
    public virtual string Line1 { get; set; } 
    public virtual string Line2 { get; set; } 
    public virtual string City { get; set; }

    // can not be null
    public virtual Person Person { get; set; } 
}

主な戦略は次のとおりです。

Id( 
    t => t.Id, 
    t => { 
        t.Generator(Generators.HighLow, g => g.Params(new { max_low = 100 })); 
        t.Column(typeof(TEntity).Name + "Id"); 
    });
4

1 に答える 1

5

実際に何を望んでいるかに応じて、1 対 1 のマップまたは多対 1 のマップで質問に答えることができます。本当に一意の双方向制約が必要な場合は、このリンクを参照してください: http://notherdev.blogspot.com/2012/01/mapping-by-code-onetoone.html

通常、1 対 1 は不適切な戦略です。ほとんどの場合、すべての列を 1 つのテーブルに配置し、ドメイン内で列を個別のエンティティにする必要がある場合は、コンポーネント マッピングを介して列を分離するのが理にかなっているからです。ドメインとデータ モデルでそれらを分離する一般的な方法は、親に結び付けられる一意の制約を使用して多対 1 を使用することであり、これは一般的なパターンです。

一般的な 3.2 マッピングに関するヒントとヒントについては、次のリソースが非常に役立ちました: http://notherdev.blogspot.com/2012/02/nhibernates-mapping-by-code-summary.html

于 2012-03-05T16:30:03.940 に答える