我想在我的解决方案中存储冗长的.sql脚本并以编程方式执行它们。我已经想出如何执行包含我的sql脚本的字符串,但我还没想出如何从存储在解决方案中的文件中读取字符串(例如,在/ Scripts子文件夹下)。
答案 0 :(得分:31)
将SQL文件添加到项目中,然后创建新的资源文件。打开SQL文件,从左上角的下拉列表中选择“文件”(默认为字符串)。然后点击添加资源并导航到/选择SQL文件。这允许您从资源文件中获取SQL而不会丢失类型安全性,如下所示:
以上是Visual Studio 2010中的过程。我还在my blog上写了这篇文章。
答案 1 :(得分:19)
首先,编辑.sql文件的属性,以便将其作为资源嵌入。
然后使用类似于以下的代码来检索脚本:
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 :(得分:0)
将文件添加到资源,并将文件设置为资源,代码写入:
String SQLCommand = NAMESPACE.Properties.Resources.ScriptDB.ToString()
答案 3 :(得分:0)
使用QueryFirst。您将sql放在该工具提供的.sql模板中。在幕后,QueryFirst将其编译为资源并连接调用以在运行时检索它。您只需要担心在生成的包装类上调用Execute(),并且可以通过生成的POCO访问结果。端到端类型安全。永远不必记住列名或数据类型,以及在.sql文件中使用sql所需的sql的相当大的优势。
免责声明:我写过QueryFirst