Usando FluentMigrator, la creación predeterminada de Column
utilizando .AsString()
da como resultado un nvarchar(255)
. ¿Hay alguna manera simple (antes de modificar el código FluentMigrator) para crear una columna del tipo nvarchar(MAX)
?¿Puedo crear una columna de nvarchar (MAX) usando FluentMigrator?
Respuesta
Se puede crear un método de extensión para envolver .AsString (Int32.MaxValue) dentro .AsMaxString()
p.ej
internal static class MigratorExtensions
{
public static ICreateTableColumnOptionOrWithColumnSyntax AsMaxString(this ICreateTableColumnAsTypeSyntax createTableColumnAsTypeSyntax)
{
return createTableColumnAsTypeSyntax.AsString(int.MaxValue);
}
}
OK, lo encontré. Básicamente, use .AsString (Int32.MaxValue). Es una pena que no es un método .AsMaxString(), pero supongo que es bastante fácil de poner en ...
Si a menudo crea columnas/tablas con los mismos ajustes o grupos de columnas, que debe ser la creación de métodos de extensión para sus migraciones!
Por ejemplo, casi cada uno de mis tablas tiene columnas CreatedAt y UpdatedAt fecha y hora, así que nos prepararon rápidamente un poco de método de extensión por lo que puedo decir:
Create.Table("Foos").
WithColumn("a").
WithTimestamps();
I piensan creé el método de extensión correctamente ... yo sé que funciona, pero tiene un FluentMigrator LOT de interfaces ... aquí está:
public static class MigrationExtensions {
public static ICreateTableWithColumnSyntax WithTimestamps(this ICreateTableWithColumnSyntax root) {
return root.
WithColumn("CreatedAt").AsDateTime().NotNullable().
WithColumn("UpdatedAt").AsDateTime().NotNullable();
}
}
del mismo modo, casi cada una de mis tablas tiene un int la clave principal se llama 'Id', así que creo que voy a agregar Table.CreateWithId("Foos")
para que siempre agregue ese ID por mí. No estoy seguro ... De hecho, en realidad comencé a usar FluentMigrator hoy, pero siempre debería estar refactorizando cuando sea posible.
NOTA: Si comete métodos helper/extensión para sus migraciones, debe Nuncanunca jamás cambio de lo que esos métodos de hacer. Si lo hace, alguien podría intentar ejecutar sus migraciones y las cosas podrían explotar porque los métodos de ayuda que utilizó para crear la Migración # 1 funcionan de manera diferente ahora que antes.
Este es el código para crear columnas en caso que le ayuda a crear métodos de ayuda: https://github.com/schambers/fluentmigrator/blob/master/src/FluentMigrator/Builders/Create/Column/CreateColumnExpressionBuilder.cs
Puede utilizar AsCustom("nvarchar(max)")
y el paquete de extensión
- 1. ¿Por qué no puedo poner una restricción en nvarchar (max)?
- 2. Conversión de nvarchar (4000) a nvarchar (max)
- 3. Cambiar una columna de datos de varchar (max) a nvarchar (max) en SQL Server 2008
- 4. Fluido NHibernate automapping como nvarchar (max)
- 5. Rendimiento SQL: ¿Hay algún golpe de rendimiento usando NVarchar (MAX) en lugar de NVarChar (200)
- 6. nvarchar (max) versus NText
- 7. Servidor SQL, Convertir NTEXT en NVARCHAR (MAX)
- 8. sql server 2005 - exportar datos nvarchar (max)
- 9. ¿Cómo devolver un nvarchar (max) en una UDF de CLR?
- 10. XML de la columna SQL: No se pueden llamar a los métodos en nvarchar (max)
- 11. Anulación de NHibernate con fluidez para cadenas de texto largas nvarchar (MAX) no nvarchar (255)
- 12. ¿Cómo puedo almacenar una cadena en una columna varbinary (max) usando C#
- 13. Consulta MAX usando CAML
- 14. SQL Server, nvarchar (MAX) o ntext, image o varbinary?
- 15. ¿Cómo almacenar imágenes en una columna varbinary (max)?
- 16. ¿Debo almacenar HTML como nvarchar (MAX) o ntext?
- 17. Cambiar el tipo de columna de ntext a varbinary (max)
- 18. ¿Cómo cambiar cada columna nvarchar a varchar?
- 19. Para Nvarchar (Max) ¿Solo estoy obteniendo 4000 caracteres en TSQL?
- 20. varbinary (max) datatype invalid
- 21. cómo asignar una columna VARCHAR (MAX) en NHibernate hbm.xml archivos de asignación
- 22. Consulta SQL para convertir nvarchar a int
- 23. ¿Qué función del servidor SQL puedo usar para obtener el carácter o la longitud del byte de una columna nvarchar (max)?
- 24. Javascript max() para la columna de matriz
- 25. ¿Cómo puedo probar la unidad de mis migraciones de FluentMigrator?
- 26. Determine la escala decimal MAX utilizada en una columna
- 27. ¿Cómo puedo crear una enumeración usando números?
- 28. ¿Cómo crear una columna virtual usando MySQL SELECT?
- 29. migrator.net vs fluentmigrator vs migsharp
- 30. ¿Cómo cargo un archivo a una columna varbinary (max) en SQL Server 2008, usando TSQL?