2
最近我遇到了一個奇怪的行爲在自動映射的流利NHibernate。我有以下的階級結構(爲了釀造起見,一些屬性被切斷了)。NHibernate自動映射問題
public class UserGroup
{
public virtual UserGroup ParentGroup { get; set; }
public virtual UserGroupMember Manager { get; protected set; }
public virtual ISet<UserGroupMember> Members { get; protected set; }
}
和
public class UserGroupMember : BaseEntity
{
public virtual User User { get; set; }
public virtual UserGroup Group { get; set; }
}
用於用戶組的映射:
public class UserGroupMap : IAutoMappingOverride<UserGroup>
{
public void Override(AutoMapping<UserGroup> mapping)
{
mapping.HasMany(el => el.Members)
.Cascade
.AllDeleteOrphan().Inverse().LazyLoad();
}
}
的自動映射在UserGroupMember表創建兩個柱(兩者均爲外鍵),以反映用戶組之間的關係和UserGroupMembers。我發現,所產生的映射包含錯誤的列(如下圖所示):
<set cascade="all-delete-orphan" inverse="true" lazy="true" name="Members" mutable="true">
<key>
<column name="Parent_Id" />
</key>
<one-to-many class="Groups.Data.UserGroupMember, Server, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
</set>
導致錯誤的查詢:
- 雖然UserGroupMember插入 - 用於分組ID(這是正確的) ,雖然在UserGroupMember選擇不使用PARENT_ID
- - 用於PARENT_ID
分組ID是在UserGroupMember映射文件反映了組PROPERT列y在UserGroupMember中。
我試圖修改添加.KeyColumn(「Group_Id」)的映射,它解決了問題。但是有沒有什麼辦法可以讓流利的NHibernate「以正確的方式思考」?
我不認爲是這樣。這是一對多的關係。我認爲問題可能是我有兩個屬性,一個是UserGroupMember,另一個是ISet。 –
2011-05-06 10:49:57