NHibernate包映射了一个额外的列

时间:2011-05-11 15:29:00

标签: .net nhibernate nhibernate-mapping

我有一个名为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类的空属性中,或者我必须编写其他代码以在映射后获取/设置序列?不幸的是,目前不能重构存储结构。

如果我必须编写自己的代码来映​​射它,那么使用最少的数据库命中的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

我认为你回答的是post,或者在nhibernate.info网站上查看这篇优秀的article

<强> *修改 您问的是如何将属性添加到已被定义为多对多关系的“联结”表中,并且可能不希望将映射更改为两个多对一的映射。因此,如果不给予太多魔力,我会a)查看S.O(我的第一个链接)上的重复问题或b)使用LINQ到对象(点击我的第二​​个链接)....

很抱歉,但我认为您不需要更多帮助。

答案 1 :(得分:0)

我发现当我拉一个列表时,手动重置序列更容易,因为检索按顺序对它们进行排序。

我们的插入和更新运行通过更新序列的存储过程(并在其他地方设置其他几个标志,这就是我们选择存储过程的原因),因此更改将保持不变。

在这种情况下,在检索对象之后重置序列(假设我们知道序列的起始索引和其他约束)比重新构建我们的底层对象和服务层的部分更有意义。