【发布时间】:2018-03-15 01:30:33
【问题描述】:
我刚刚将 SQLite 添加到我的 asp.net webApi 项目中,但无法确定如何将 App_Data 文件夹的路径传递给 DbContextOptionsBuilderUseSqlite
我在web.config 中有以下内容我有一个指向带有连接字符串的外部配置文件的链接...
<connectionStrings configSource="config\connectionStrings.config"/>
我在里面...
<connectionStrings>
<add name="MyDatastore"
connectionString="DataSource=./App_Data/test.sqlite" />
</connectionStrings>
在我的DbContext.OnConfiguring 我有....
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
string path = WebConfigurationManager.ConnectionStrings["MyDatastore"].ConnectionString;
optionsBuilder.UseSqlite(path);
}
}
路径被正确检索(我可以看到我得到了connectionStrings.config上配置的路径
所以./App_Data/test.sqlite 被传递给optionsBuilder.UseSqlite(path)。
但是,我收到以下错误...
SQLite Error 14: 'unable to open database file'.
如果我只使用connectionString="DataSource=test.sqlite" />,那么当我在我的开发机器上运行调试时,它似乎神奇地找到了 App_Data 文件夹中的文件,但我在另一台机器上遇到了问题(发布版本)。我认为这是路径,尽管我得到的只是“无法打开数据库文件”。
我也试过了..
connectionString="DataSource=|DataDirectory|test.sqlite" />
这给了我一个Illegal characters in path 错误。
以下确实有效(完整路径)
connectionString="d:\0\test.sqlite" />
但我希望能够使用相对路径,例如甚至可能是.\datastore\test.sqlite。
有人对此有什么想法吗?
提前致谢
【问题讨论】:
标签: asp.net sqlite asp.net-web-api ef-core-2.0