这是我的数据库: tblGroups: 组ID 组名
tblMembersInGroup 组ID 会员ID 秩
tblMembers 会员ID 名称
这是我的模特:
class group
{
int groupid
string name
List<EnlistedMembers> myMembers;
}
class EnlistedMebmers
{
Member myMember;
int Rank;
}
class Member
{
int MemberID
string Name
}
我不知道如何在FNH中映射它,因为Members类没有告诉FNH谁是父亲的对象。
我认为组映射是显而易见的:
Table(tblGroup);
Id(x => x.groupid, "GroupID').GeneratedBy.Identity();
Map(x => x.name, "GroupName");
HasMany(x => x.myMembers).AsList().Inverse().Cascade.All();
下一步是什么?
如何映射enlistedmembers,没有身份对象?没有组对象? 但有额外的排名数据。 db拥有所有数据,我需要一种正确创建类的方法......
谢谢,
达尼
答案 0 :(得分:0)
您是否需要来映射EnlistedMembers?如果没有,你可以像这样映射Group.MyMembers:
HasManyToMany(z => z.MyMembers)
.AsList()
.Cascade.All()
.Table("tblMembersInGroup")
.ParentKeyColumn("GroupId")
.ChildKeyColumn("MemberId");
答案 1 :(得分:0)
我怀疑这可能是一个圆孔的方形钉,但我会调查SubClassing。
public class MemberMap : ClassMap<Member>
{
public MemberMap()
{
Table("tblMembers");
Id(x => x.MemberID);
Map(x => x.Name);
}
}
public class EnlistedMembersMap : SubclassMap<EnlistedMembers>
{
public EnlistedMembersMap()
{
Table("tblMembersInGroup");
Map(x => x.Rank);
}
}
您需要让EnlistedMembers继承自Member。我也非常确定它会对你在tblMembersInGroup中的复合键咆哮。我还没有答案......但是。