【问题标题】:Where to put SQLite database in UWP app在 UWP 应用中放置 SQLite 数据库的位置
【发布时间】:2016-10-12 02:54:17
【问题描述】:

Current Entity Framework Core Documentation 给出了在 Windows 10 / UWP 应用程序中使用 SQLite 的示例。给出的示例用optionsBuilder.UseSqlite("Filename=Blogging.db"); 声明了db 位置。路径相当于Windows.Storage.ApplicationData.Current.LocalFolder.Path 这将SQLite 数据库放在<packagefolder>\LocalState 中。

我们正在探索将 UWP/SQLite 用于将业务事务存储在 SQLite 数据库中的业务应用程序。但是文件夹名称LocalState 向我表明这是存储状态信息的地方,而不是长期存储业务交易的地方。

还有另一个文件夹<packagefolder>\AppData。这是我们的数据库更合适的位置吗?如果是这样,如何在 UWP 应用程序中访问它?或者<packagefolder>\LocalState毕竟是放置用于长期存储业务事务的数据库的正确位置?

【问题讨论】:

    标签: entity-framework sqlite uwp entity-framework-core


    【解决方案1】:

    文档是正确的。数据库的路径 (Windows.Storage.ApplicationData.Current.LocalFolder.Path) 是正确的。只要设备上安装了应用程序,您的数据就会存在。

    请参阅下面的 MSDN 文章以及其中最重要的内容:

    “本地数据,只要创建它的应用保持安装状态就存在”

    还有一个:

    “Local 可以包含文件 (LocalFolder) 和设置 (LocalSettings),并且应该用于任何具有用户价值且不容易重新创建或下载的信息”

    ApplicationData.Current.LocalFolder 用于存储信息。

    https://blogs.windows.com/buildingapps/2016/05/10/getting-started-storing-app-data-locally/#_Local

    【讨论】:

    • 谢谢@Daniel Krzyczkowski。我已将其标记为正确,但您提到的链接未提及 LocalState。让我担心的是数据库最终出现在 LocalState 中的事实。也没有提到 AppData 文件夹,它是 LocalState 的兄弟。
    • @Vague "ApplicationData.Current.LocalFolder" 指的是文件系统中的 "%AppData%/Local/Packages//LocalState"。这就是您在“\LocalState”中看到数据库的原因。 AppData 是您可以在其中找到应用程序包的文件夹(在层次结构中较高)
    • 不在我的 Windows 10 机器上@Daniel Krzyczkowski。在包文件夹中,我有这些文件夹:AC、AppData、LocalCache、LocalState、RoamingState、Settings、SystemAppData、TempState
    • 我想补充一点,我在调试时发现@DanielKrzyczkowski 是对的。如果您在调试时完成操作之前中断,请转到在变量中捕获它后显示的路径。通常,我最终会在 Local State 中找到它,但在极少数情况下,它会奇怪地出现在 AppData 中。
    猜你喜欢
    • 1970-01-01
    • 2012-05-06
    • 2016-09-16
    • 2011-06-11
    • 2021-07-19
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多