0

我正在使用 NHibernate 3.3.2(第一次)并且我正在尝试创建下表,以便 ID 是唯一的表/实体标识符,并且序列是每个组的唯一身份,在表示例 clubs 123 , 232 和 444 是组。

ID Club Sequence
1  123  1
2  123  2
3  232  1
4  232  2
5  444  1
6  123  3

我希望插入仅与俱乐部类别一起使用,这两个身份都是自动的。

这可以做到吗?如果是这样,我该怎么做?

4

2 回答 2

1

如果问题是这样的:

根据这种模式在 Sequence 列中生成值的最佳方法是什么?

那么这里有一些提示:

  • 要让数据库生成序列列,我认为您需要查看基于触发器的解决方案。您所说的“组”对数据库没有任何意义,除非您创建一些(SQL-)代码来处理它。您可能想要创建一个存储过程来生成数字,然后是一个 INSERT 触发器。

  • 可以告诉 NHibernate 忽略 INSERT 列,而只读回 DB 生成的值。请参阅NHibernate 参考中的生成的属性

  • 如果您删除 Id 列,您描述的结构类似于 NHibernate 中列表的映射将生成的结构。收藏始终归某物所有,因此如果您拥有 Club 拥有的收藏,这可能是一个解决方案。然后 Club 列将指向集合所有者,而 Sequence 将是列表中的索引。(我假设该表应该包含更多列,然后是列表中的元素。)

我认为您需要做的是考虑什么对象模型对您的问题有意义。然后设计表格以匹配它。NHibernate 擅长处理现有的遗留表模型,但如果您从头开始,则首先创建模型是有意义的。

于 2013-02-18T07:53:28.553 回答
0

如果执行插入,则可以在您的属性映射中指定一个生成最大序列的公式。或者,如果不存在,您可以更改您的实体以生成序列号。

于 2013-02-20T19:24:51.577 回答