首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架核心SQLite如何使用关系数据源

实体框架核心SQLite如何使用关系数据源
EN

Stack Overflow用户
提问于 2021-01-03 18:41:49
回答 1查看 221关注 0票数 0

在我当前的一个项目中,我在一个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。

代码语言:javascript
复制
protected override void OnConfiguring(DbContextOptionsBuilder options)
    => options.UseSqlite("Data Source=MySqliteDatabase.db");

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

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

有谁有解决这个问题的办法吗?我注意到Entity-Framework-Core-5是一种新版本,这会不会是这个特定版本的bug或类似版本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-04 04:57:01

感谢@Sergey和@ErikEJ。

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

代码语言:javascript
复制
AppDomain.CurrentDomain.SetupInformation.ApplicationBase

我从下面的Stackoverflow页面得到了这个:How to find path of active app.config file?

上面写着,访问ConfigurationFile-Property,但对于ASP.Net,我猜它是ApplicationBase

在那里有正确的路径,/bin/Debug/...的一条。

总而言之,我的新方法看起来像这样:

代码语言:javascript
复制
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
    string databasePath = $"{AppDomain.CurrentDomain.SetupInformation.ApplicationBase}MySqliteDatabase.db";
    options.UseSqlite($"Data Source={databasePath}");
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65548893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档