【问题标题】:multiple unique keys in nhibernatenhibernate中的多个唯一键
【发布时间】:2010-10-28 09:12:59
【问题描述】:

我需要通过以下方式创建约束:

CONSTRAINT [IX_Unique_1] UNIQUE NONCLUSTERED 
(
    [Ordering] ASC,
    [Description] ASC
),
CONSTRAINT [IX_Unique_2] UNIQUE NONCLUSTERED 
(
    [Description] ASC
)

我有以下 nHibernate 映射:

<property name="Description" column="Description" type="String" unique-key="IX_Seed_Template_Fields_Result" />

<property name="Ordering" column="Ordering" type="Int32" unique-key="IX_Seed_Template_Fields_Result" />

那么我怎样才能为描述列添加一个单独的唯一约束呢?

【问题讨论】:

  • 不是因为第二个约束,第一个约束没用吗?

标签: nhibernate database-indexes


【解决方案1】:

如果你不关心数据库中的索引名称,可以这样映射:

<property 
  name="Description" 
  column="Description" 
  type="String" 
  unique-key="Description, Ordering_Description" />

<property 
  name="Ordering" 
  column="Ordering" 
  type="Int32" 
  unique-key="Ordering_Description" />

您可以提供以逗号分隔的索引名称列表。列表中所有同名的列都被添加到同一个索引中。

【讨论】:

    【解决方案2】:

    使用&lt;database-object&gt; 创建其他索引。

    5.6. Auxiliary Database Objects

    【讨论】:

    • 所以如果我使用这个我需要手动编写 CREATE INDEX 语句吗?
    • 为什么要手动创建索引?您只需在映射文件中指定索引属性即可。
    • @Stefan:我不知道你可以在unique-key 属性中写入多个索引名称。如果可行,那么您的答案比我的要好(我赞成)。不确定 10 个月后是否会有所作为,但是... :-)
    • @Diego:由于一个错误,它在前一段时间没有工作。它很可能是原始 Hibernate 代码库中的一个特性,NHibernate 开发人员不知道它:-) 我修复了它,他们将它集成到核心中。现在它起作用了。使用 OSS 很酷。见stackoverflow.com/questions/834565/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-19
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    相关资源
    最近更新 更多