在我目前的一个项目中,我在ASP.Net-Project中使用实体框架核心和SQLite。
我的问题是,使用了项目文件中的数据库,而不是中的数据库/bin目录
我按照docs.microsoft-page的说明创建了数据库:
https://learn.microsoft.com/de-de/ef/core/get-started/overview/first-app?tabs=visual-工作室
这是我正在使用的Connectionstring。
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlite("Data Source=MySqliteDatabase.db");
我让创建的数据库在更新时被复制。
我浏览了许多页面,寻找提供相对数据库路径的方法,但我找不到解决方案。它要么仍然使用项目数据库文件,要么因为无法打开而不会创建新的数据库,等等
有人能解决这个问题吗?我注意到Entity-Framework-Core-5是一个新版本,这可能是这个特定版本的bug或类似版本吗?
感谢@Sergey和@ErikEJ。
所以为了解决这个问题,我真的需要提供目录的完整路径。由于Directory.GetCurrentDirectory
返回了错误的路径,即项目目录的路径,而不是/bin/Debug/...
,我使用以下代码查看了配置文件中命名的路径,名为@Sergey suggested:
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}");
}
这对我来说很有效,非常感谢你的支持,也许这也会帮助其他人。