2014-06-16 90 views
0

我有一個惱人的問題。我有兩個對象在兩個不同的列上相關。的關係是相同的(都是一對多),並且結構如下NHibernate映射兩個表之間的多個關係

BRAND表

ID
名稱
[其它東西]

CATEGORY表

ID
名稱
BrandID(FK to Brand。品牌名稱)
DynamicBrandID (FK到品牌。導航名稱DynamicBrands
[其他東西]

但無論我嘗試什麼,我都無法在NHibernate中使用它。 HBM文件看起來像他們已經爲兩個對象正確生成,但無論我嘗試什麼,每當我想插入類別時,我都會得到一個錯誤。

我的第一個問題 - 我嘗試的東西,NHibernate無法應對?這是一個遺留數據庫,所以如果是這樣的話,那麼我有更大的問題。

其次 - 出了什麼問題?我得到的線沿線的一個錯誤:

{「這SqlParameterCollection以計數= 26無效指數26。」} - 我不能挖掘到更多的在所有所以我飛有點盲目

感謝您的幫助

+0

莫非你請用你的映射文件(或映射類)補充你的問題? –

+0

模型上有很多問題與問題無關,因爲我可以看到 - 我不想混淆視圖,但是如果您真的想看到它們 - https://dl.dropboxusercontent.com/ u/17868024/model.zip –

回答

0

雖然缺少您的映射文件,但我敢打賭,問題是明確的:加倍映射。它經常發生在我們確實有一列兩個represenations:

public virtual int BrandID { get; set } 
public virtual Brand Brand { get; set } 

和XML映射的樣子:

<property name="BrandID" column="BrandID" /> 
<many-to-one name="Brand" column="BrandID" class="Brand" /> 

這是不對的,因爲當生成的SQL語句,有兩種插入一列"BrandID"。但有一個解決方案,使其中一個映射只讀。通常情況下,int(BrandID)是更好的選擇,因爲我們仍然從ORM利潤:

<property name="BrandID" column="BrandID" insert="false" update="false"/> 
<many-to-one name="Brand" column="BrandID" class="Brand" /> 

所以,請檢查您的流暢,使之像這樣:

References(x => x.Brand, "BrandID"); 
Map(x => x.BrandID, "BrandID") 
    .Not.Insert() 
    .Not.Update() 
    ; 

還要檢查Error is coming while saving data with many to one mapping in nhibernate

+0

上面明確指出了BrandId的含義。爲什麼不能通過'Brand.Id'訪問它。 –

相關問題