【问题标题】:Access local SQLite Database in .NET MAUI in Windows在 Windows 中访问 .NET MAUI 中的本地 SQLite 数据库
【发布时间】:2022-11-10 01:56:10
【问题描述】:

我正在使用 Entity Framework Core 访问 SQLite 数据库,只要我将数据源设置为完全限定路径,它就可以在 Windows 上正常工作。

现在我想将此数据库嵌入到我的应用程序中。我已将database.db 添加到Resources\Raw 文件夹并将BuildAction 设置为MauiAsset

我将此添加到.csproj 文件中:

<MauiAsset Include="Resources\Raw\database.db" />

但是"Data Source=database.db" 字符串不起作用。

【问题讨论】:

  • 我不是 MAUI 专家,但我认为您无法从资产中打开 SQLite 数据库。连接字符串需要一个文件系统路径,但据我所知,资产文件只能使用 FileSystem.OpenAppPackageFileAsync 作为流打开。最好的解决方案可能是将资产文件保存到 FileSystem.AppDataDirectory 并从那里打开它。

标签: .net sqlite entity-framework-core .net-maui


【解决方案1】:

您必须将数据库从应用程序包复制到应用程序数据目录。

string databaseName = "database.db3";

string databasePath = System.IO.Path.Combine(FileSystem.AppDataDirectory, databaseName);

Task<Stream> task = FileSystem.OpenAppPackageFileAsync($"Resources/Raw/{databaseName}");

var stream = task.Result;

using MemoryStream memoryStream = new MemoryStream();

stream.CopyTo(memoryStream);

File.WriteAllBytes(databasePath , memoryStream.ToArray());

然后,使用变量 databasePath 建立与数据库的连接

它也适用于 Android 平台。

【讨论】:

    猜你喜欢
    • 2019-10-15
    • 1970-01-01
    • 2017-07-19
    • 2011-07-11
    • 2021-12-15
    • 2015-09-19
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多