Tengo modelo de entidad que quiero ser reflejada a la base de datos cada vez que ejecute la aplicación, pero sin borrar los datos así que estoy usando SchemaUdpate
con fluidez método de asignaciones de NHibernate de una maneraCómo modificar la columna usando la funcionalidad SchemaUpdate nhibernate
var config = Fluently.Configure().Database
(MsSqlConfiguration.MsSql2008.ConnectionString(connectionString));
//here I add mappings , apply conventions, build configuration, etc...
//
new SchemaUpdate(configuBuild).Execute(doUpdate: true, script: true);
Así que mi modelo de entidad se actualiza correctamente casi todo el tiempo. El problema es que cuando me altero definición de una propiedad, digamos que tenía dicha propiedad
[CustomSqlType("nvarchar(400)")]
public virtual string Name { get; set; }
CustomSqlType
es sólo un atributo que será aplicado por una cierta convención cuando se cargan las asignaciones. En este caso, la propiedad Name se crearía como el campo nvarchar(400)
. Pero si en el futuro cambio de la definición de este
[CustomSqlType("nvarchar(500)")]
public virtual string Name { get; set; }
de archivo hbm.xml correcta sería generada (correcta nvarchar medios (500)), pero la columna en la base de datos no se actualiza cuando tal evento alter es válida desde la perspectiva db. ¿Es posible alterar (generar una secuencia de comandos alternada) la columna existente con la nueva restricción de longitud/precisión/nulable usando SchemaUpdate
?
Eso realmente apesta. ¿Qué terminaste haciendo para forzar una actualización en tu esquema? – Mithon
gracias! Pasé años intentando descubrir por qué no parece actualizar mis restricciones predeterminadas. - ¿Has logrado encontrar una solución alternativa? – Zack