Wah*_*aly 15 nhibernate nhibernate-mapping fluent-nhibernate
如何使用NHibernate Mapping或Fluent NHibernate创建多列索引和/或唯一约束.
Ste*_*ger 16
为多个属性分配索引/唯一约束名称
<property name="A" index="AB" />
<property name="B" index="AB" />
Run Code Online (Sandbox Code Playgroud)
理论上它也适用于在同一实体上有一个以上的索引:
<property name="A" index="AB, ABC" />
<property name="B" index="AB, ABC" />
<property name="C" index="ABC" />
Run Code Online (Sandbox Code Playgroud)
但是有一个错误.我还写了一个补丁.如果您对此感兴趣,请投票支持该错误或添加评论或其他内容.
编辑:刚刚检查了错误发生了什么.它在版本2.1.0中修复,因此它现在应该完美地工作.非常感谢伟大的NHibernate开发团队!
Jak*_*les 14
很旧,但是我遇到了同样的问题,我还有一些事情需要补充:
Stefan Steinegger正确回答了非唯一的多列索引,但遗漏了唯一多列索引的代码.对于那些你可以使用:
<property name="A" unique-key="AB" />
<property name="B" unique-key="AB" />
Run Code Online (Sandbox Code Playgroud)
所以,基本上相同,但具有不同的属性名称.
有趣的是,对于唯一索引,NHibernate为密钥生成自己的名称,但对于非唯一索引,它使用您提供的任何内容.
例如,上面的代码不会生成一个名为"AB"的唯一索引,而是类似的东西UQ__TableName__7944C87104A02EF4.
这在NHibernate文档的第19.1.1节中有记录:
某些标记接受
index用于指定该列索引名称的属性.甲unique-key属性可用于组列在单个单元键约束.目前,unique-key属性的指定值不用于命名约束,仅用于对映射文件中的列进行分组.
但是以下内容:
<property name="A" index="AB" />
<property name="B" index="AB" />
Run Code Online (Sandbox Code Playgroud)
将只生成一个名为"AB"的索引.
| 归档时间: |
|
| 查看次数: |
8260 次 |
| 最近记录: |