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

问题描述 投票:0回答:2

在我当前的项目中,我在 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 是一种新版本,这可能是该特定版本的错误或类似问题吗?

asp.net sqlite entity-framework-core ef-core-5.0
2个回答
0
投票

谢谢@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}");
}

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


0
投票

谢谢你们,你们救了我的命。我花了两天时间搜索整个中国互联网。但到目前为止一无所获

© www.soinside.com 2019 - 2024. All rights reserved.