2012-07-05 14 views
0

NHibernate的映射到一個屬性欄,我有映射下sitation一些困難袋

我有一個連接ID的人,我用它來獲取地圖包和屬性。 這適用於數據庫已存在的情況。但是對於我們的單元測試,我們從模式生成一個,它會給出一個錯誤:「重複列名」。

這裏是映射:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="DomainLayer.SearchDomain" assembly="Test"> 
    <class name="SearchPerson" table="person" lazy="false" mutable="false"> 
    <id name="Id" column="`id`" type="int"> 
     <generator class="identity" /> 
    </id> 
    <property name="Name" column="`NAAM`" type="string" /> 
    <property name="FirstName" column="`VOORNAAM`" type="string" /> 
    <property name="ConnectionId" column="`Koppelid`" type="int" /> 
    <bag name="Languages" lazy="false" mutable="false" access="field.camelcase-underscore"> 
     <key property-ref="ConnectionId" column="Koppelid" /> 
     <one-to-many class="DomainLayer.Person.LanguageSkill, Test" /> 
    </bag> 
    </class> 
</hibernate-mapping> 

問題: 「Koppelid」 無論是在從袋子作爲財產Key屬性。

編輯:

的LanguageSkill映射:

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="DomainLayer.Person" assembly="Test"> 
    <class name="LanguageSkill" table="languageskill" lazy="false"> 
    <id name="Id" type="Int32"> 
     <generator class="identity" /> 
    </id> 
    <property name="ConnectionId" column="`KoppelId`" type="Int64" /> 
    <property name="Remark" column="`Opmerking`" type="string" /> 
    <property name="Source" column="`CdOorsprong`" type="string" /> 
    <property name="MotherTongue" column="`moedertaal`" type="boolean" /> 
    <property name="ModifiedDate" column="`wyzdat`" type="DateTime" /> 
    </class> 
</hibernate-mapping> 
+0

在包裏效果鍵列的其他表中未表WN所以這可以不是問題。張貼LanguageSkill映射以及因爲我懷疑有錯誤 – Firo 2012-07-06 05:52:47

+0

是的,你是對的。 LanguageSkill的映射包含一個屬性ConnectionId(列名「koppelid」)。我在OP中添加了語言技能映射。 – 2012-07-06 07:42:23

回答

1

它應該實際工作。這可能是因爲你在一個案例中標記了它,而不是在另一個案例中。

試試這個:其實

<bag ...> 
    <key property-ref="ConnectionId" column="`Koppelid`" /> 
+0

這個伎倆!非常感謝,不知道這是否對創作產生影響。 – 2012-07-06 08:01:40

0

的原因是列在LanguageSkillMapping定義了兩次。既然你映射到的列,你可以把它映射爲基準,設定袋逆

<bag name="Languages" inverse="true" lazy="false" mutable="false" access="field.camelcase-underscore"> 
    <key property-ref="ConnectionId" column="Koppelid" /> 
    <one-to-many class="DomainLayer.Person.LanguageSkill, Test" /> 
</bag> 


<many-to-one name="SearchPerson" column="`KoppelId`" /> 

更新:沒關係,斯特凡得到它

+0

你說的也是對的,問題在於我無法做到這一點,因爲SearchPerson嚴格限定爲searchdomain,而languageskill則屬於普通域。不過謝謝! – 2012-07-06 08:10:26

相關問題