对于一个学校项目,我不允许使用存储过程来存储我的 SQL 脚本。为了解决这个问题,我尝试在我的类程序集中创建一个 SQL_scripts 文件夹。
现在我卡在如何从相对路径读取我的脚本上了?
这是我尝试过但没有成功的方法:
var appDomain = System.AppDomain.CurrentDomain;
var basePath = appDomain.RelativeSearchPath ?? appDomain.BaseDirectory;
string path = Path.Combine(basePath, "SQL_scriptes", "GetAllEmptyRoomsAtDateRange.sql");
string query = File.ReadAllText(path);
但我总是在以下文件夹中:
- MyProject\Tests\bin\Debug\SQL_scriptes\GetAllEmptyRoomsAtDateRange.sql
有什么想法吗?
最佳答案
您应该将带有 sql 代码的文件添加为嵌入式资源:
然后使用下面的函数从文件中获取SQL:
public string GetScript(string scriptName)
{
var assembly = Assembly.GetExecutingAssembly();
var resourceName = "Q46868043.SQL_scripts." + scriptName;
using (Stream stream = assembly.GetManifestResourceStream(resourceName))
using (StreamReader reader = new StreamReader(stream))
{
return reader.ReadToEnd();
}
}
关于c# - 读取嵌入到 .NET 程序集中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46868043/