在我当前的项目中,我在 ASP.Net 项目中使用 Entity Framework Core 和 SQLite。
我的问题是,使用项目文件中的数据库,而不是 ./bin-Directory 中的数据库
我按照 docs.microsoft-page 的说明创建数据库:
https://learn.microsoft.com/de-de/ef/core/get-started/overview/first-app?tabs=visual-studio
这是我正在使用的连接字符串。
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlite("Data Source=MySqliteDatabase.db");
当较新时,我让创建的数据库被复制。
我浏览了许多页面,寻找提供相对数据库路径的方法,但我找不到解决方案。它要么仍然使用项目数据库文件,要么不会创建新数据库,因为它无法打开,等等。
有人有办法解决这个问题吗?我注意到 Entity-Framework-Core-5 是一种新版本,这可能是该特定版本的错误或类似问题吗?
谢谢@Sergey 和@ErikEJ。
因此,为了解决这个问题,我确实需要提供目录的完整路径。 由于
Directory.GetCurrentDirectory
返回了错误的路径,即项目目录的路径而不是 /bin/Debug/...
,我按照 @Sergey 的建议查看了配置文件中指定的路径,使用以下代码:
AppDomain.CurrentDomain.SetupInformation.ApplicationBase
我从以下 Stackoverflow 页面获得此信息: 如何找到活动的app.config文件的路径?
那里说,要访问
ConfigurationFile
-属性,但对于 ASP.Net,我猜是 ApplicationBase
。
那里有正确的路径,
/bin/Debug/...
中的一条。
放在一起,我的新方法如下所示:
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
string databasePath = $"{AppDomain.CurrentDomain.SetupInformation.ApplicationBase}MySqliteDatabase.db";
options.UseSqlite($"Data Source={databasePath}");
}
这对我来说很有效,非常感谢您的支持,也许这对其他人也有帮助。
谢谢你们,你们救了我的命。我花了两天时间搜索整个中国互联网。但到目前为止一无所获