我有这个实体关系。
public abstract class UserGroup
{
public virtual int UserGroupId { get; set; }
public virtual int GroupType { get; set; }
public virtual string GroupName { get; set; }
public virtual IList<UserGroupMember> GroupMembers { get; set; }
}
public class UserGroupMember
{
public virtual int UserGroupMemberId { get; set; }
public virtual User User { get; set; }
public virtual UserGroup UserGroup { get; set; }
}
请注意,这UserGroup
是基类,并且我有一些派生类被UserGroup.GroupType
. 我正在使用Single Table Per Class Hierarchy继承映射策略。
流畅的 NHibernate 映射:
public class UserGroupMap : BaseClassMap<UserGroup>
{
public UserGroupMap()
{
Table("UserGroup");
Id(x => x.UserGroupId);
DiscriminateSubClassesOnColumn("GroupType");
Map(x => x.GroupName);
HasMany(x => x.GroupMembers)
.KeyColumn("UserGroupId")
.Cascade.AllDeleteOrphan()
.Inverse();
}
}
public class UserGroupMemberMap: BaseClassMap<UserGroupMember>
{
public UserGroupMemberMap()
{
Table("UserGroupMember");
Id(x => x.UserGroupMemberId);
References(x => x.User, "UserId")
.Cascade.SaveUpdate();
References(x => x.UserGroup, "UserGroupId")
.Cascade.SaveUpdate();
}
}
这就是我想要实现的目标:
我想让 UserGroupMember 也成为一个基类,并让它在鉴别器上进行UserGroup.GroupType
区分。这可能吗?
这个问题的另一种表述方式是,如果我可以添加以下行,那就太好了:
DiscriminateSubClassesOnColumn("UserGroup.GroupType");
进入UserGroupMemberMap