我有两个表Counter和Group,我想用中间的Counter_To_Group表链接。
Counter [Id, Version, PackageId, ...]
Group [Id, ...]
Counter_To_Group [Counter_Id, Counter_Version, Counter_PackageId, Group_Id]
Inside Counter对象我希望有一个Group列表:
public IEnumerable<Group> Groups {get; set;}
如何使用Fluent NHibernate进行映射?
答案 0 :(得分:1)
只要您在关系上有其他属性,就需要业务模型中的特定实体(或组件)来表示它们。
Counter -(one-to-many)-> CounterToGroup -(many-to-one)-> Group
CounterToGroup可以是一个组件(在XML映射中称为复合元素)。该组件的优点是它没有标识,也不必从数据库中明确添加/删除。没有父母就不可能存在。 (另一方面,它不能在Counter的不同实例之间共享,但这是你很可能不想要的。)
答案 1 :(得分:1)
假设您已在映射中正确设置了复合键,则可以按照以下步骤进行操作,
HasManyToMany<Group>(x => x.Groups)
.Table("Counter_To_Group")
.ParentKeyColumns.Add("Counter_Id", "Counter_Version", "Counter_PackageId")
.ChildKeyColumn("Group_Id")