Ejecutando un script SQL almacenado como un recurso

Me gustaría almacenar scripts largos .sql en mi solución y ejecutarlos programáticamente. Ya he descubierto cómo ejecutar una cadena que contiene mi script sql, pero no he descubierto cómo leer la cadena de un file que se almacenará en la solución (en una subcarpeta / Scripts, por ejemplo).

Primero, edite las properties del file .sql para que se incruste como recurso.

Luego use un código similar al siguiente para recuperar el script:

string commandText; Assembly thisAssembly = Assembly.GetExecutingAssembly(); using (Stream s = thisAssembly.GetManifestResourceStream( "{project default namespace}.{path in project}.{filename}.sql")) { using (StreamReader sr = new StreamReader(s)) { commandText = sr.ReadToEnd(); } } 

Agregue los files SQL a su proyecto y luego cree un nuevo file de resources. Abra el file SQL y select 'Archivos' en el menu desplegable superior izquierdo (el valor pnetworkingeterminado es Cadenas). Luego presiona agregar recurso y navega hacia / selecciona el file SQL. Esto le permite get SQL del file de resources sin perder su security de tipo de la siguiente manera:

SqlFiles.SqlScript

Lo anterior es el process en Visual Studio 2010. También escribí sobre esto en mi blog .

Agregue el file a Recursos y establezca el file en Recurso , en escritura de código:

 String SQLCommand = NAMESPACE.Properties.Resources.ScriptDB.ToString() 

Use QueryFirst . Pones tu sql en la plantilla .sql proporcionada por la herramienta. Detrás de escena, QueryFirst lo comstack como un recurso y conecta la llamada para recuperarlo en time de ejecución. Solo necesita preocuparse por llamar a Execute () en la class contenedora generada, y sus resultados son accesibles a través de POCO generados. Seguridad de extremo a extremo. Nunca tiene que recordar un nombre de columna o tipo de datos, además de las considerables ventajas de tener su sql donde Dios pretendía … en un file .sql.

descargo de responsabilidad: escribí QueryFirst