Я только что добавил SQLite в свой проект webApi asp.net, и мне трудно понять, как получить путь к папке 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
.
У кого-нибудь есть идеи по этому поводу?
заранее спасибо