Fluent nhibernate 流利的NHibernate:如何使用独特的合同建立多对多关系
我想创建一个多对多关系,但我想在新表(MessageReceivers)中的两列(AdvanceMessageId,UserId)上都有一个唯一的约束:Fluent nhibernate 流利的NHibernate:如何使用独特的合同建立多对多关系,fluent-nhibernate,many-to-many,unique,Fluent Nhibernate,Many To Many,Unique,我想创建一个多对多关系,但我想在新表(MessageReceivers)中的两列(AdvanceMessageId,UserId)上都有一个唯一的约束: 感谢您的帮助您还应该映射关系的反面,如 mapping.HasManyToMany(x => x.Users) .WithTableName("MessageReceivers") .WithParentKeyColumn("UserId") .WithChildKeyColumn("Advanc
感谢您的帮助您还应该映射关系的反面,如
mapping.HasManyToMany(x => x.Users)
.WithTableName("MessageReceivers")
.WithParentKeyColumn("UserId")
.WithChildKeyColumn("AdvanceMessageId")
.Inverse();
在最新的Fluent NHibernate中,您必须进行更改
- WithTableName->Table
- WithParentKeyColumn->ParentKeyColumn
- WithChildKeyColumn->ChildKeyColumn
i、 e 这将在使用两列的链接表上设置唯一的复合主键约束。 (聚集索引) 缺点是AsSet()不能与IList类型的集合属性一起使用,因此没有强制转换的循环就没有 我一直在使用ICollection并将它们实例化为我的应用程序的哈希集,效果很好
有关Fluent Nhibernate收集管理的更多信息: 列表:实体的有序集合,允许重复。在代码中使用.net IList。索引列需要映射到NHibernate中 集合:唯一实体的无序集合,不允许重复。在代码中使用Iesi.Collection.ISet。重写GetHashCode和Equals以指示duplicate的业务定义非常重要。可以通过定义orderby或通过定义比较器(产生SortedSet结果)进行排序 包:无序的实体列表,允许重复。在代码中使用.net IList。NHibernate未映射列表的索引列,也不支持该列
mapping.HasManyToMany(x => x.Users)
.WithTableName("MessageReceivers")
.WithParentKeyColumn("UserId")
.WithChildKeyColumn("AdvanceMessageId")
.Inverse();
mapping.HasManyToMany(x => x.Users)
.WithTableName("MessageReceivers")
.WithParentKeyColumn("UserId")
.WithChildKeyColumn("AdvanceMessageId")
.Inverse().AsSet();