您在文件系统混乱拼装结构,文件夹的布局。这是完全不同的东西。汇编(dll或exe)格式在CLI规范中定义,并且具有PE文件格式,并在编译源代码期间创建。您项目中的脚本存储在文件系统中,除非它们被标记为项目中的特定操作,即它们将保持原样。
另一方面,如果将它们标记为项目属性中的Embedded.Resource,它们将作为受管资源存储在项目组合中,并可以在运行时访问。但是,在使用.NET时,使用脚本似乎是一种奇怪的方法。
可能的建议是创建静态字符串或SqlCommand变量并为其分配SQL查询。在这种形式下他们不是存储过程。
基于托管资源的解决方案代码如下。为了让它工作,请添加到您的项目根文件MySqlScripts.sql中,并将其标记为Embedded.Resource。在这个实现中,默认的项目根名称空间是“SqlScriptAsAResource”,这反映在嵌入资源的名称中。相应地更改文件,名称空间和嵌入的资源名称。
using System;
using System.IO;
using System.Reflection;
namespace SqlScriptAsAResource
{
class Program
{
static void Main(string[] args)
{
Assembly myAssembly = Assembly.GetExecutingAssembly();
Stream resStream = myAssembly.GetManifestResourceStream("SqlScriptAsAResource.MySqlScripts.sql");
using(StreamReader reader = new StreamReader(resStream))
{
String sqlScript = reader.ReadToEnd();
// Use your SQL script
}
}
}
}
基于静态成员的解决方案是这一个:
using System;
using System.Data.SqlClient;
namespace SqlScriptAsAResource
{
internal static class SqlUtilities
{
public static readonly String SqlScriptValue = "SELECT * FROM Table1;";
public static readonly SqlCommand Commadn = new SqlCommand("SELECT * FROM Table1;");
}
}
你好。我没有看到你的第一个选项和kmatyaszek之间的区别。对于第二个选项,我使用静态字符串作为简短的SQL脚本。 –
嗨,所以你可以得到两个编码员独立到达同一个解决方案的证据 - 就像在科学中一样,你有两个独立的文章在同一个科学杂志的同一个问题上对新的发现也一样说:)个人知道很多这样的出版物 –