我有一个现有的父子关系,我试图在Fluent Nhibernate中映射:
[RatingCollection] - > [评价]
评级收集:
评级有:
我一直试图弄清楚HasMany的哪种排列在这里有意义。我现在拥有的:
HasMany<Rating>(x => x.Ratings)
.WithTableName("Rating")
.KeyColumnNames.Add("RatingCollectionId")
.Component(c => { c.Map(x => x.Code);
c.Map(x => x.Name); );
它可以从CRUD角度运行,但因为它是一个包,所以当我尝试对Ratings属性进行简单的更新/插入时,它最终会删除评级内容。我想要的是一个索引集合,但没有使用数据库生成的ID(现在是六位数范围)。
关于如何获得从零开始的索引集合的任何想法(所以我可以去实体.Ratings [0] .Name =“foo”)这将允许我修改集合而不删除/重新插入所有持久化?
答案 0 :(得分:0)
首先,您使用的是旧版本的Fluent NHibernate;已弃用WithTableName
,转而使用Table
。
可以通过索引访问IList,以便Bag可以正常工作。我不确定为什么你把评级作为一个组件映射或者它的影响是什么。这是一个标准的集合映射:
HasMany(x => x.Ratings).KeyColumn("RatingCollectionId")
.Cascade.AllDeleteOrphan().Inverse()
.AsBag().LazyLoad();