簡體   English   中英

NHibernate 3.2 代碼映射中的一對一映射

[英]One to one mapping in NHibernate 3.2 mapping by code

我正在嘗試NHibernate 3.2 built-in mapping by code api ( NOT Fluent NHibernate ) 學習NHibernate 3.2 built-in mapping by code api 你能幫我映射這些實體之間的一對一(或零)關系嗎?

注意:我用谷歌搜索了這個問題,也搜索了 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"); 
    });

根據您實際想要的內容 - 一對一地圖或多對一地圖可能會回答您的問題。 如果您需要真正獨特的雙向約束,請參閱此一對一鏈接: http : //notherdev.blogspot.com/2012/01/mapping-by-code-onetoone.html

一對一通常是一種糟糕的策略,因為在幾乎所有情況下將列全部放在一個表中是有意義的,如果您需要它們作為域中的單獨實體,則通過組件映射將它們分開。 在域和數據模型中將它們分開的典型方法是使用具有唯一約束的多對一連接到父級,這是一種常見模式。

有關一般 3.2 映射的提示和提示,此資源對我有很大幫助: http : //notherdev.blogspot.com/2012/02/nhibernates-mapping-by-code-summary.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM