我有一个名为MediaStyle的类的NHibernate映射,它包含这个映射:
<bag name="EngineSteps" table="core.MediaStyleMediaPrintEngineStepAssoc" order-by="Sequence" lazy="true" cascade="none">
<key column="MediaStyleId"/>
<many-to-many class="MediaPrintEngineStep" lazy="proxy" />
</bag>
类MediaPrintEngineStep也被映射,该类包含属性'Sequence'。序列未存储在MediaPrintEngineStep映射到的表上,但包含在用于将EngineSteps映射到MediaStyles的关联表中。
有没有办法让nHibernate将core.MediaStyleMediaPrintEngineStepAssoc中的'Sequence'列映射到MediaPrintEngineStep类的空属性中,或者我必须编写其他代码以在映射后获取/设置序列?不幸的是,目前不能重构存储结构。
如果我必须编写自己的代码来映射它,那么使用最少的数据库命中的最佳方法是什么?
答案 0 :(得分:0)
我认为你回答的是post,或者在nhibernate.info网站上查看这篇优秀的article。
<强> *修改 您问的是如何将属性添加到已被定义为多对多关系的“联结”表中,并且可能不希望将映射更改为两个多对一的映射。因此,如果不给予太多魔力,我会a)查看S.O(我的第一个链接)上的重复问题或b)使用LINQ到对象(点击我的第二个链接)....
很抱歉,但我认为您不需要更多帮助。
答案 1 :(得分:0)
我发现当我拉一个列表时,手动重置序列更容易,因为检索按顺序对它们进行排序。
我们的插入和更新运行通过更新序列的存储过程(并在其他地方设置其他几个标志,这就是我们选择存储过程的原因),因此更改将保持不变。
在这种情况下,在检索对象之后重置序列(假设我们知道序列的起始索引和其他约束)比重新构建我们的底层对象和服务层的部分更有意义。