在我当前的一个项目中,我在一个ASP.Net项目中使用了实体框架核心和SQLite。
我的问题是,使用的是project-files中的Database,而不是./bin-Directory中的Database
我按照docs.microsoft-page的说明创建了数据库:
https://docs.microsoft.com/de-de/ef/core/get-started/overview/first-app?tabs=visual-studio
这是我正在使用的Connectionstring。
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlite("Data Source=MySqliteDatabase.db");我让创建的数据库在更新的时候被复制。
我浏览了许多页面,寻找提供相对数据库路径的方法,但我找不到解决方案。它要么仍然使用project-DB-File,要么不会创建新的数据库,因为它无法打开,等等。
有谁有解决这个问题的办法吗?我注意到Entity-Framework-Core-5是一种新版本,这会不会是这个特定版本的bug或类似版本?
发布于 2021-01-04 04:57:01
感谢@Sergey和@ErikEJ。
因此,为了解决这个问题,我确实需要提供目录的完整路径。由于Directory.GetCurrentDirectory返回了错误的路径,即项目目录的路径,而不是/bin/Debug/...,因此我使用以下代码查看了配置文件中命名为@Sergey suggessted的路径:
AppDomain.CurrentDomain.SetupInformation.ApplicationBase我从下面的Stackoverflow页面得到了这个:How to find path of active app.config file?
上面写着,访问ConfigurationFile-Property,但对于ASP.Net,我猜它是ApplicationBase。
在那里有正确的路径,/bin/Debug/...的一条。
总而言之,我的新方法看起来像这样:
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
string databasePath = $"{AppDomain.CurrentDomain.SetupInformation.ApplicationBase}MySqliteDatabase.db";
options.UseSqlite($"Data Source={databasePath}");
}这对我来说很有效,非常感谢你的支持,也许这也会对其他人有所帮助。
https://stackoverflow.com/questions/65548893
复制相似问题