如何使用 Windows 通用应用程序(C#,XAML)存储数据/使用数据库

How to store data / use databases with Windows Universal Apps (C#, XAML)

我正在研究使用 C# 和 XAML 开发通用 Windows 应用程序。如果我要设计一个应用程序来记录用户的膳食(营养日志应用程序),我需要一个食物数据库(营养数据——蛋白质、脂肪等)、用户数据(年龄、体重、身高、目标、卡路里需求等)。 ) 和膳食(时间、消耗的食物、每种食物的数量等)。

其中一些是本地的,一些不是。

问题:这里最好的方法是什么,我应该研究什么样的数据库,以什么形式存储数据,存储大量数据的最佳方式是什么数据并随时可用,其他人使用通用 Windows 应用程序做什么?

旁注:我编写了一个简单的 C# 控制台应用程序,它获取我的数据,计算我的需求,允许我输入食物的营养数据,然后使用该数据记录饭菜。此数据写入单独的 XML 文件(user.xml、meal.xml 和 food.xml)。我可以使用 LINQ 进行各种查询 - 我在过去 X 天吃了什么,我今天还需要吃多少,食物 X 含有多少蛋白质......但是 XML 不能是存储和处理大量数据的最佳方式。

感谢帮助!

您可以使用 SQLite. It is a full-blown SQL relational database which stores its data in a single file. It has ports for PCL and Universal apps, and has a .NET connector which allows it to work with ADO and LINQ. See download page.

我们一直在使用 SQLIte,它对我们来说工作得很好。 如果您希望使用原始 SQL 查询,您可以使用 SQLIte PCL 或 SQLite NET 为您提供对象实例。

唯一的问题是 SQLite 是一个本机组件,它迫使您针对三个 CPU archs x86、x64 和 ARM 进行构建。所以你需要有三个不同的构建输出。这里有一些细节 http://codifyit.blogspot.in/

对于不经常更新的数据,您可以使用某种由代码控制的数据库缓存。

干杯,

索拉夫

我们正在使用 Azure 移动应用程序并利用;

using Microsoft.WindowsAzure.MobileServices.Sync;
using Microsoft.WindowsAzure.MobileServices.SQLiteStore;

使用这些定义本地数据存储;

MobileServiceSQLiteStore store = new MobileServiceSQLiteStore(ApplicationData.Current.RoamingFolder.Path + "\MyLocalSQLite.db");
Debug.WriteLine("Database Location: " + ApplicationData.Current.RoamingFolder.Path + "\MyLocalSQLite.db");

store.DefineTable<Account>();

await App.MobileService.SyncContext.InitializeAsync(store);

这允许您使用

在云端和本地存储数据
private IMobileServiceSyncTable<Account> accountsTable = App.MobileService.GetSyncTable<Account>();

您需要稍微阅读一下它们的使用方法,但它相当简单。 https://blogs.msdn.microsoft.com/azuremobile/2014/04/07/deep-dive-on-the-offline-support-in-the-managed-client-sdk/ 让我开始了。

这些表可以转换为集合;

Accounts = await accountsTable.ToCollectionAsync();

然后你可以用你的UI绑定到它。

总而言之,它是一个非常灵活的系统,一旦您完成了学习曲线,其中一些仍然很新,您将 运行 陷入一些陷阱。编码愉快!