如何更改多列索引中的列顺序?
即:
mapping.References(x => x.SomeReference).SetAttribute("index", "IX_index");
mapping.Map(x => x.SomeField).SetAttribute("index", "IX_index");
Run Code Online (Sandbox Code Playgroud)
生成以下架构:
create index IX_index on ApplicantProgramDatas (SomeField, SomeReferenceId)
Run Code Online (Sandbox Code Playgroud)
但我想得到:
create index IX_index on ApplicantProgramDatas (SomeReferenceId, SomeField)
Run Code Online (Sandbox Code Playgroud)
您可以使用 <database-object> 或 IAuxiliaryDatabaseObject 在 NHibernate 中定义索引。
在 hbm.xml 文件中:
<hibernate-mapping xmlns="urn:nhiernate-mapping-2.2">
<database-object>
<create>VALID SQL</create>
<drop>VALID SQL</create>
</database-object>
</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)
注意 <database-object> 可以位于同一 hbm.xml 文件中的类映射之前或之后,从而允许您将索引定义、触发器等与其应用的对象一起保存。
另一个选项是 NHibernate.Mapping.IAuxiliaryDatabaseObject:
namespace NHibernate.Mapping {
public interface IAuxiliaryDatabaseObject : IRelationalModel {
void AddDialectScope(string dialectName);
bool AppliesToDialect(Dialect dialect);
void SetParameterValues(IDictionary<string, string> parameters);
}
public interface IRelationalModel {
string SqlCreateString(Dialect dialect, IMapping p, string defaultCatalog, string defaultSchema);
string SqlDropString(Dialect dialect, string defaultCatalog, string defaultSchema);
}
}
Run Code Online (Sandbox Code Playgroud)
鉴于您正在使用 Fluent NHibernate,IAuxiliaryDatabaseObject 可能会更适合您。只需在构建时公开您的配置,然后调用:
var sqlCreate = "CREATION SCRIPT";
var sqlDrop = "DROP SCRIPT";
cfg.AddAuxiliaryDatabaseObject(new SimpleAuxiliaryDatabaseObject(sqlCreate, sqlDrop));
Run Code Online (Sandbox Code Playgroud)
注意 NHibernate.Mapping.SimpleAuxiliaryDatabaseObject 是 NHibernate 的一部分。如果您所需要做的只是为数据库对象提供创建/删除脚本,则不必自己编写它。
我快速浏览了 Fluent NHibernate 代码库,没有看到任何对 IAuxiliaryDatabaseObject 的直接支持。因此,这是公开您的配置对象并自己提供所有 IAuxiliaryDatabaseObjects 的问题。编写一些代码来扫描映射程序集以查找实现 IAuxiliaryDatabaseObject 的类型,然后对它们进行遍历以传递给 cfg.AddAuxiliaryDatabaseObject(obj) 并不是太困难。
您可以在 NHibernate 文档中找到有关辅助数据库对象的更多信息:
http://nhibernate.info/doc/nh/en/index.html#mapping-database-object
| 归档时间: |
|
| 查看次数: |
1569 次 |
| 最近记录: |