2010-11-06 56 views
6

? El objetivo aquí es tener mi configuración completa de la base de datos y la generación del esquema manejada por fluencia nhibernate.¿Cómo especifico un índice de varias columnas con Fluent NHibernate

¿Hay alguna manera de especificar un índice de varias columnas con Fluent nhibernate?

entiendo que se puede especificar un índice en una propiedad individual/columna

así:

mapping.Map(x => x.ItemDt).Index("IX_DataTransferLog_ItemDt"); 

¿Cómo puedo especificar varias columnas?

Si eso no es posible, ¿hay alguna forma de agregar sentencias de SQL sin formato a una configuración que se ejecutará después de crear o actualizar el esquema?

Respuesta

12

En XML-mappings esto se puede lograr mediante la adición de índice con el mismo nombre a todas las propiedades que tiene que estar en el índice:

<property name="Name" index="MyIndex" /> 
<property name="RunTimeInMinutes" index="MyIndex" /> 

Por desgracia, no tienen ningún proyecto actualmente usando Fluido NHibernate que yo podría probar esto, pero creo que esto funciona en Fluido NHibernate la misma manera:

mapping.Map(x => x.Name).Index("MyIndex"); 
mapping.Map(x => x.RunTimeInMinutes).Index("MyIndex"); 

Si esto no funciona, puede añadir el SQL prima necesaria para crear el índice de database-object en la cartografía. NHibernate ejecutará el SQL cuando se crea la base de datos utilizando SchemaExport. No sé si existe una versión Fluent para mapear objetos de base de datos, pero puede mapear database-object usando XML y agregar el archivo de mapeo a la configuración de Fluidez NHibernate.

+1

Lo he probado y esto funciona: mapping.Map (x => x.Name) .Index ("MyIndex"); mapping.Map (x => x.RunTimeInMinutes) .Index ("MyIndex"); – Lance

+1

VERIFICADO. Yo con guión el índice y tengo: USO [NhibernateDB] IR /****** Objeto: Índice [IX_MyTable_ColumnA_And_ColumnB] ​​Guión Fecha: 01/16/2012 17:26:57 ******/ CREAR NONCLUSTERED íNDICE [IX_MyTable_ColumnA_And_ColumnB] ​​ON [dbo]. [MyTable] ( \t [ColumnA] ASC, \t [ColumnB] ​​ASC ) GO – granadaCoder

+0

esto es correcto y bueno, pero hay una manera fácil de hacer que el índice ¿único? –

Cuestiones relacionadas