2010-08-11 79 views
0

我有一箇舊的數據庫的兩個表...NHibernate的在傳統數據庫如何告訴NHibernate的哪一個是父表

tblParentTable (int id, string specialIdentifier, ...) 
tblChildTable (int id, string specialIdentifier, ...) 

正如你可以看到,一個自動遞增INT ID已添加,但子表使用舊的字符串主鍵連接(實際上,specialIdentifier是tblParentTable的主鍵,以及tblChildTable上的主鍵和外鍵)。

所以我創建了域對象和Fluent NHibernate映射,但由於這種奇怪的模式,NHibernate認爲它需要先保存tblChildTable記錄,然後才保存tblParentTable - 這會導致外鍵約束錯誤。

如何向NHibernate暗示tblParentTable是父級,需要先保存?

這裏是映射...

public ParentMap() 
{ 
    Table("tblParentTable"); 
    Id(x => x.Id).Column("id"); 
    Map(x => x.SpecialIdentifier); 
    References(x => x.Child).Column("specialIdentifier"); 
} 

public ChildMap() 
{ 
    Table("tblChildTable"); 
    Id(x => x.Id).Column("id"); 
    Map(x => x.SpecialIdentifier); 
    References(x => x.Child).Column("specialIdentifier"); 
} 

請隨時要求更多的信息,如果你認爲我缺少一些重要的東西。

謝謝

回答

0

我不使用流利;相反,我通過手動創建xml映射文件來創建我的映射。 我相信關聯上的'逆'屬性可以讓你指定關聯的'所有者'(父母)。因爲我不使用流利的,我不知道如何在你的映射中指定,所以我不能給你一個例子。

此外,在Xml映射中,我會使用'property-ref'屬性來指示'specialIdentifier'是由關係使用的列。

相關問題