2009-07-29 24 views
3

我正在處理我的第一個NHibernate項目,所以這看起來可能是一個簡單的問題。如何保存一個由其他複雜類型組成的NHibernate的實體,但我只有其他複雜類型的ID

下面是從我的真實場景簡化來傳達具體問題。

可以說我有一個客戶實體

public class Customer 
{ 
    prop virtual int ID { get; set; } 
    prop virtual string Name { get; set; } 
    prop virtual Region Region { get; set; } 
} 

和我區實體(地區都是這樣,西北,中西部等 - 一個漂亮的定義列表,這將是在某種下拉列表)

public class Region 
{ 
    prop virtual int ID { get; set; } 
    prop virtual string Name { get; set; } 
    private readonly IList<Customer> _customers = new List<Customer>(); 

    public virtual void Add(Customer customer) 
    { 
     _customers.Add(customer); 
    } 

    public virtual void Remove(Customer customer) 
    { 
     _customers.Remove(customer); 
    } 

    public virtual Customer[] GetCustomers() 
    { 
     return _customers.ToArray(); 
    } 
} 

當我去堅持一個客戶實體時,我真的只想要3條信息(Customer.ID,Customer.Name,& Customer.Region.ID),我該如何做到這一點,因爲NHibernate預計包含完整地區實體的客戶實體(不是隻是身份證)...

回答

6

您可以使用Load通過ID獲取區域而不需要擊中數據庫。這會給你一個NHibernate會識別的實體,並允許你在沒有額外數據庫調用的情況下堅持下去。

Reference

0

我認爲,如果你已經有了一個區域的ID,你只需要分配一個ID添加到新的區域對象,並將其附加到新的客戶。只要您沒有將Customer關聯中的級聯屬性設置爲「全部」或「更新」(實際上會更新數據庫中現有區域的數據),它將連接給定區域給新客戶。