You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Entity Framework Core访问MAUI嵌入SQLite数据库路径配置失败求助

解决MAUI中嵌入SQLite数据库无法访问的问题
  • 问题根源:MauiAsset类型的资源是嵌入到程序集内的,并非文件系统中的实际物理文件,而SQLite需要可读写的物理文件路径才能正常操作,直接使用"Data Source=database.db"找不到有效文件。

  • 解决步骤:

    1. 将嵌入数据库复制到可读写目录
      先获取应用的可读写存储路径,再把嵌入的数据库文件复制到该路径下。示例代码:
      // 获取应用私有数据目录下的目标路径
      string dbPath = Path.Combine(FileSystem.AppDataDirectory, "database.db");
      
      // 仅当文件不存在时执行复制操作
      if (!File.Exists(dbPath))
      {
          using var stream = await FileSystem.OpenAppPackageFileAsync("database.db");
          using var outputStream = File.OpenWrite(dbPath);
          await stream.CopyToAsync(outputStream);
      }
      
    2. 使用正确的连接字符串
      以复制后的完整路径作为数据源构建连接字符串:
      string connectionString = $"Data Source={dbPath}";
      var options = new DbContextOptionsBuilder<YourDbContext>()
          .UseSqlite(connectionString)
          .Options;
      
  • 注意事项:

    • FileSystem.OpenAppPackageFileAsync的参数是相对于Resources\Raw的文件名,这里直接传"database.db"即可
    • 首次启动应用时完成数据库复制,后续启动直接复用已复制的文件,避免重复操作
    • FileSystem.AppDataDirectory是跨平台的合法可读写目录,在Windows、Android、iOS等平台都能正常使用

内容的提问来源于stack exchange,提问作者Seraphim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 09:15:37