2011-03-29 8 views
6

Necesito administrar una columna adicional Incremento automático usando Fluiber NHibernate.Identidad de clave no primaria Correlación de AutoIncrement con Fluidez NHibernate

Todas mis clases de dominio usan la Guiada Asignada como ID, pero en una entidad particular necesito un valor adicional de incremento automático.

He intentado la siguiente asignación, la columna está bien creada en SQL Server, pero la especificación de identidad no está configurada.

 Id(x => x.OrderId).GeneratedBy.Assigned(); 

     Map(x => x.TicketNumber).ReadOnly().Generated.Always().Not.Nullable(); 

¿Algún ayuda?

Respuesta

1

Supongo que está tratando de utilizar la herramienta integrada de generación de esquemas en NHibernate para hacerlo. Lamentablemente con esta herramienta, es imposible hacer lo que está pidiendo. Las únicas columnas para las que establecerá el indicador de Identidad son las columnas de clave principal. Por lo tanto, a menos que esta columna sea parte de la clave principal, necesitará un método manual para configurarla para que sea una columna de Identidad.

5

En la remota posibilidad de que todavía después de una respuesta para esta pregunta, es posible que pueda encontrar un poco de ayuda en este SO mensaje: fluent nhibernate auto increment non key (Id) property

En Hibernate:

<property name="Foo" generated="always" update="false" insert="false" /> 

Y Fluido NHibernate :

Map(x => x.Foo).ReadOnly().Generated.Always(); 

y potencialmente esta entrada foro de hibernación: https://forum.hibernate.org/viewtopic.php?f=1&t=954375

"generado significa que el valor está siendo generado por la base de datos. Por lo tanto, necesitaría un activador, etc. en realidad configurando estos valores. "

2
Map(x => x.TicketNumber). 
    .CustomSqlType("INT IDENTITY(1,1)") 
    .Not 
    .Nullable() 
    .ReadOnly() 
    .Generated.Insert(); 
Cuestiones relacionadas