Я хотел бы хранить длинные сценарии .sql в своем решении и выполнять их программно. Я уже понял, как выполнить строку, содержащую мой sql script, но я не понял, как читать строку из файла, который будет храниться в решении (например, в подпапке/Scripts).
Выполнение SQL script, хранящегося в качестве ресурса
Ответ 1
Сначала отредактируйте свойства файла .sql, чтобы он был встроен в качестве ресурса.
Затем для получения 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();
}
}
Ответ 2
Добавьте файлы SQL в свой проект, затем создайте новый файл ресурсов. Откройте файл SQL и выберите "Файлы" в верхнем левом раскрывающемся списке (по умолчанию - "Строки" ). Затем нажмите добавить ресурс и перейдите в /select файл SQL. Это позволяет вам получить SQL из файла ресурсов, не теряя при этом тип безопасности:
Вышеописанный процесс в Visual Studio 2010. Я также написал об этом на в моем блоге.
Ответ 3
Добавить файл в Ресурсы и установить файл в Ресурс, впишите код:
String SQLCommand = NAMESPACE.Properties.Resources.ScriptDB.ToString()
Ответ 4
Используйте QueryFirst. Вы помещаете свой sql в шаблон .sql, предоставляемый инструментом. За кулисами QueryFirst компилирует его как ресурс и соединяет вызов, чтобы получить его во время выполнения. Вам нужно только беспокоиться о вызове Execute() в сгенерированном классе-оболочке, и ваши результаты доступны через сгенерированные POCOs. Безопасность от конца до конца. Никогда не помните имя столбца или тип данных, а также значительные преимущества наличия вашего sql, где Бог предназначался... в файле .sql.
Отказ от ответственности: я написал QueryFirst