使用Entity Framework Core访问MAUI嵌入SQLite数据库路径配置失败求助
解决MAUI中嵌入SQLite数据库无法访问的问题
问题根源:
MauiAsset类型的资源是嵌入到程序集内的,并非文件系统中的实际物理文件,而SQLite需要可读写的物理文件路径才能正常操作,直接使用"Data Source=database.db"找不到有效文件。解决步骤:
- 将嵌入数据库复制到可读写目录
先获取应用的可读写存储路径,再把嵌入的数据库文件复制到该路径下。示例代码:// 获取应用私有数据目录下的目标路径 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); } - 使用正确的连接字符串
以复制后的完整路径作为数据源构建连接字符串: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
相关产品推荐
相关产品推荐

