Entity Framework Core SQLite 如何使用相对数据源

Entity Framework Core SQLite How to use relative Data Source

在我当前的项目中,我在 ASP.Net-项目中使用 Entity Framework Core 和 SQLite。

我的问题是,使用了项目文件中的数据库,而不是 ./bin-Directory 中的数据库

我按照 docs.microsoft 页面的说明创建了数据库:

https://docs.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");

我让创建的数据库在更新时被复制过来。

我浏览了很多页面,寻找提供相对数据库路径的方法,但找不到解决方案。它要么仍然使用项目-DB-文件,要么不会创建新的数据库,因为它无法打开,等等。

有人对此有解决方案吗?我注意到 Entity-Framework-Core-5 是一种新版本,这可能是这个特定版本的错误或类似错误吗?

感谢@Sergey 和@ErikEJ。

所以要解决这个问题,我真的需要提供目录的完整路径。 由于 Directory.GetCurrentDirectory 返回了错误的路径,即项目目录的路径而不是 /bin/Debug/... ,我查看了配置文件中命名的路径,正如@Sergey所建议的那样,使用以下代码:

AppDomain.CurrentDomain.SetupInformation.ApplicationBase

我从以下 Whosebug 页面获得了这个: How to find path of active app.config file?

那里说,要访问 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}");
}

这对我有用,非常感谢您的支持,也许这对其他人也有帮助。