2013-04-01 73 views
1

我有一個系統,我需要能夠添加一個評論字段到客戶和位置模型,但我無法觸及現有表的模式。不過,我可以添加一個評論表。我簡化了這個例子。我們希望能夠將此評論添加到更多模型中,他們都使用Guid作爲標識。NHibernate - 添加註釋屬性到實體(與連接存儲)

這個現有的系統是一個擁有自己的數據訪問層的第三方系統。

我們剛剛開始進入NHibernate。從我可以告訴它看起來像一個加入地圖。

例子:

public class Customer 
{ 
    public Guid Id { get; private set; } 
    public string FirstName { get; private set; } 
    public string LastName { get; private set; } 
    public string Comment { get; set; } 
}  

public class Location 
{ 
    public Guid Id { get; private set; } 
    public string Name { get; private set; } 
    public string Address { get; private set; } 
    public string Comment { get; set; } 
} 

注:我們相信我們想要的評論作爲1對1的關係,而不是1對多的。

如何配置單獨的表只是捕獲Id和註釋?我正在尋找使用的正確術語。我正在尋找XML示例(並且如果可能的話,Fluent配置)。我想保留一個表中所有對象的註釋。謝謝。

回答

0

如果你可以添加註釋表比流利映射(以及相應的鍵列現有的表中)可以像

public class CustomerMap : ClassMap<Customer>{ 
    public CustomerMap(){ 
     //...other columns mappings 

     References(c=>c.Comment).Column("CommentId"); 
    } 
} 

,並重複用於其他實體。您也可以在那裏設置所需的獲取模式(加入)和其他操作。我在那裏寫了References(如此多對一),但是如果你需要一對一的映射,這不是一個很大的區別

+0

一對一映射是什麼樣的? – BuddyJoe

+1

將'References'改爲'HasOne' – tchrikch

0

如果您無法更改數據庫模式,您的選項非常有限。 MAYBE,你可以使用映射來做到這一點。 看看這裏:

http://ayende.com/blog/3961/nhibernate-mapping-join

嘗試使用相同的列名在映射所有實體。

+0

你知道有沒有辦法通過配置告訴系統主實體不可變,但「連接」是可變的? – BuddyJoe

+0

@brun:你什麼意思?如果na實體不可變,那麼它就不可能發生變異。 – cidico

+0

有客戶的一部分,我不想mutate評論屬性是好的。我只是強制執行那些私人「套」的屬性,如我在我的C#上面顯示? – BuddyJoe

相關問題