以下多對一映射工作(從NorthBreeze拍攝):微風+ NHibernate的許多一對一的關係,避免指定關係鍵
public partial class UserRole
{
public virtual long ID { get; set; }
public virtual long UserId { get; set; }
public virtual long RoleId { get; set; }
public virtual User User { get; set; }
public virtual Role Role { get; set; }
}
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Models.NorthwindIB.NH" assembly="Model_NorthwindIB_NH">
<class name="UserRole" table="`UserRole`" dynamic-update="true" optimistic-lock="dirty">
<id name="ID" column="`ID`" type="long" unsaved-value="0">
<generator class="native" />
</id>
<many-to-one name="User" column="`UserId`" class="User" />
<many-to-one name="Role" column="`RoleId`" class="Role" />
<property name="UserId" type="long" not-null="true" insert="false" update="false" />
<property name="RoleId" type="long" not-null="true" insert="false" update="false" />
</class>
</hibernate-mapping>
我怎樣才能讓這種多對一的工作(沒有在模型中指定用戶ID和角色ID屬性):
public partial class UserRole
{
public virtual long ID { get; set; }
public virtual User User { get; set; }
public virtual Role Role { get; set; }
}
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Models.NorthwindIB.NH" assembly="Model_NorthwindIB_NH">
<class name="UserRole" table="`UserRole`" dynamic-update="true" optimistic-lock="dirty">
<id name="ID" column="`ID`" type="long" unsaved-value="0">
<generator class="native" />
</id>
<many-to-one name="User" column="`UserId`" class="User" not-null="true" />
<many-to-one name="Role" column="`RoleId`" class="Role" not-null="true" />
</class>
</hibernate-mapping>
錯誤拋出: 找不到匹配FK財產Models.NorthwindIB.NH.UserRole.User
難道這可以以某種方式在未來版本的BreezeJs中處理,或者目前有沒有在模型中指定這些鍵的方法?還是有更多的比我所看到的?
編輯(非官方解決方案): 謝謝你指導我們在正確的方向。由於這是我們想要照顧的,我們根據Steve Schmitt所說的做了一些修改。
這裏有一個改變的鏈接,所以你可以看到我們如何解決這個問題,所以它可以幫助其他任何人。 (請注意,此代碼只適用於NHibernate的)
https://github.com/maca88/Breeze/commit/7a80c35cf0b20b5cffdef6d2eddeccd1bdeb3735
你的錯誤在哪裏出現?初看起來,映射看起來沒問題。 – Rippo
僅當使用第二個示例時,纔會在元數據生成上拋出錯誤,因爲我們沒有爲該類中的關係(用戶和角色)指定鍵。我明白爲什麼會有錯誤,但我想知道是否有一種方法可以製作模型,而無需在其中指定關係鍵。 – RagingTroll
對不起,我不是100%清楚錯誤發生在哪裏。你是說當你建立會話工廠或這是一個微風錯誤? – Rippo