4
我有一個流利的nhiberbate將兩個表映射到一個類的問題。如何在流利的NHibernate中將兩個表映射到一個類
我有以下的數據庫模式:
TABLE dbo.LocationName
(
LocationId INT PRIMARY KEY,
LanguageId INT PRIMARY KEY,
Name VARCHAR(200)
)
TABLE dbo.Language
(
LanguageId INT PRIMARY KEY,
Locale CHAR(5)
)
,希望建設下面的類定義:
public class LocationName
{
public virtual int LocationId { get; private set; }
public virtual int LanguageId { get; private set; }
public virtual string Name { get; set; }
public virtual string Locale { get; set; }
}
這裏是我的映射類:
public LocalisedNameMap()
{
WithTable("LocationName");
UseCompositeId()
.WithKeyProperty(x => x.LanguageId)
.WithKeyProperty(x => x.LocationId);
Map(x => x.Name);
WithTable("Language", lang =>
{
lang.WithKeyColumn("LanguageId");
lang.Map(x => x.Locale);
});
}
的問題是與來自另一個表的Locale字段的映射,特別是關鍵字之間如果這些表不匹配。每當我跑這個映射我啓動時獲取以下錯誤的應用程序:
外鍵 (FK7FC009CCEEA10EEE:語言 [LanguageId]))必須爲被引用的主 鍵列的相同數量的 (LOCATIONNAME [LanguageId, LocationId])
如何告訴nHibernate使用LanguageId字段從LocationName映射到語言?
您正試圖在對象中對數據進行非規範化處理......我只是不認爲這會發生,並且它有點違背了ORM的目的。我想你總是可以使表格變得非規範化。 – 2009-06-24 16:46:31
你真的想要在**一個**類中,還是可以接受一個`LocationName`類和`Language`類?在這種情況下,您可以使用`References()`方法映射關係。 – 2012-09-18 12:31:12