최근 Fluent NHibernate의 Automapping에서 이상한 행동을 보았습니다. 나는 다음과 같은 클래스 구조를 가지고있다. (어떤 속성은 양조를 위해 끊어짐).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; }
}
맵핑 다음 자동 매핑은 UserGroupMember 테이블의 두 열 (외부 키이다 둘 다)를 생성
public class UserGroupMap : IAutoMappingOverride<UserGroup>
{
public void Override(AutoMapping<UserGroup> mapping)
{
mapping.HasMany(el => el.Members)
.Cascade
.AllDeleteOrphan().Inverse().LazyLoad();
}
}
은 사용자 그룹 간의 관계를 반영 및 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에서 삽입을하는 동안 - (오른쪽이다) GROUP_ID 사용 선택 UserGroupMember 년 동안 PARENT_ID
- 사용하지 - PARENT_ID는
GROUP_ID 사용하면 그룹 PROPERT을 반영 UserGroupMember 매핑 파일의 열입니다 UserGroupMember의 y입니다.
.KeyColumn ("Group_Id")을 추가하는 매핑을 수정하려했으나 문제가 해결되었습니다. 그러나 Fluent NHibernate를 '올바른 방향으로 생각하게'하는 방법이 있습니까?
나는 그런 경우가 아니라고 생각합니다. 그것은 일대 다 (One-To-Many) 관계입니다. 나는이 문제가 내가 UserGroupMember 인 하나의 속성과 ISet를 가질 수 있다고 생각한다. –