Quería agregar mi experiencia con la conversión. Tenía muchos text
campos en el antiguo código Linq2SQL. Esto era para permitir que las text
columnas presentes en los índices se reconstruyeran EN LÍNEA .
Primero, conocí los beneficios durante años, pero siempre asumí que la conversión significaría algunas consultas largas y aterradoras en las que SQL Server tendría que reconstruir la tabla y copiar todo, derribar mis sitios web y aumentar mi ritmo cardíaco.
También me preocupaba que Linq2SQL pudiera causar errores si estaba haciendo algún tipo de verificación del tipo de columna.
Sin embargo, me complace informar que los comandos ALTER regresaron INSTANTÁNEAMENTE, por lo que definitivamente solo están cambiando los metadatos de la tabla. Puede haber algún trabajo fuera de línea para que los datos de <8000 caracteres vuelvan a estar en la tabla, pero el comando ALTER fue instantáneo.
Ejecuté lo siguiente para encontrar todas las columnas que necesitan conversión:
SELECT concat('ALTER TABLE dbo.[', table_name, '] ALTER COLUMN [', column_name, '] VARCHAR(MAX)'), table_name, column_name
FROM information_schema.columns where data_type = 'TEXT' order by table_name, column_name
SELECT concat('ALTER TABLE dbo.[', table_name, '] ALTER COLUMN [', column_name, '] NVARCHAR(MAX)'), table_name, column_name
FROM information_schema.columns where data_type = 'NTEXT' order by table_name, column_name
Esto me dio una buena lista de consultas, que acabo de seleccionar y copiar en una nueva ventana. Como dije, ejecutar esto fue instantáneo.
Linq2SQL es bastante antiguo: utiliza un diseñador al que arrastra las tablas. La situación puede ser más compleja para EF Code primero, pero aún no lo he abordado.