Entity Framework Core SQLite 如何使用相对数据源
Posted
技术标签:
【中文标题】Entity Framework Core SQLite 如何使用相对数据源【英文标题】:Entity Framework Core SQLite How to use relative Data Source 【发布时间】:2021-04-09 10:22:42 【问题描述】:在我当前的项目中,我在 ASP.Net 项目中使用 Entity Framework Core 和 SQLite。
我的问题是,使用了项目文件中的数据库,而不是 ./bin-Directory 中的数据库
我按照 docs.microsoft-page 的说明创建了数据库:
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");
我让创建的数据库在更新时被复制。
我浏览了许多页面,寻找提供相对数据库路径的方法,但我找不到解决方案。它要么仍然使用 project-DB-File,要么不会创建新的数据库,因为它无法打开,等等。
有没有人可以解决这个问题?我注意到 Entity-Framework-Core-5 是一个新版本,这可能是这个特定版本的错误或类似情况吗?
【问题讨论】:
在连接字符串中使用完整路径 @ErikEJ 这真的是唯一的方法吗?例如,当其他人将其拉到不同的路径时,我将如何在 Debug- 和 Release-Build 之间指定以及 git 呢?那它不会坏吗? 您是否尝试将连接字符串放入配置文件中? @Sergey 你指的是哪个配置文件? 如果您按照@ErikEJ 的建议放置完整的补丁,它总是更可靠。您可以从配置文件中获取此路径 【参考方案1】:感谢@Sergey 和@ErikEJ。
所以要解决这个问题,我真的需要提供目录的完整路径。
由于 Directory.GetCurrentDirectory
返回了错误的路径,即项目目录的路径而不是 /bin/Debug/...
,我查看了配置文件中命名的路径,正如@Sergey 建议的那样,使用以下代码:
AppDomain.CurrentDomain.SetupInformation.ApplicationBase
我是从以下 *** 页面获得的: 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.ApplicationBaseMySqliteDatabase.db";
options.UseSqlite($"Data Source=databasePath");
这对我有用,非常感谢您的支持,也许这对其他人也有帮助。
【讨论】:
以上是关于Entity Framework Core SQLite 如何使用相对数据源的主要内容,如果未能解决你的问题,请参考以下文章
请问在 .NET Core 中如何让 Entity Framework Core 在日志中记录由 LINQ 生成的SQL语句?
从 Entity Framework Core IQueryable<T> 获取 SQL 代码
使用 Entity Framework Core 的 SQL Server 查询中的参数化 OPENJSON
Entity Framework Core 计数没有最佳性能
在 .NET Core 中如何让 Entity Framework Core 在日志中记录由 LINQ 生成的SQL语句