(翻译)在 Xamarin 应用中使用 MongoDB

原文地址:https://blog.xamarin.com/write-apps-using-mongodb-xamarin/git

 

在设计应用时,最重要的决定之一就是要使用什么类型的数据库。github

不久以前,这种选择仅限于像 SQL server 这样的关系型数据库。然而,如今 NoSql 数据库出现了,好处是容许应用程序同时处理大量结构和和非结构化数据,可以容易的将数据建模为对象和大规模跨服务器。mongodb

MongoDB 是一个 NoSQL 数据库,以二进制 JSON 格式存储文档,已经在 Node.js 社区流行了一段时间。Azure Cosmos DB 是一个彻底管理的云数据库。只需点击几下就能够配置一个与 MongoDB 100% 兼容的数据库。数据库

虽然 MongoDB 是由于 Node.js 解决方案而流行,但对于 .NET 驱动也是一个彻底支持和维护的。驱动程序是 .NET Standard 的实现,这意味着它与多个平台兼容,包括 Xamarin。服务器

本文将向你展现如何使用 MongoDB 建立你的第一个 Xamarin 应用!咱们会使用 LINQ 查询,插入和删除数据。在文章结束时,你会有须要建立 MongoDB 给力的 Xamarin 应用的信息。app

你能够在这个 GitHub 仓库找到全部示例的代码。异步

设置环境async

为了教学目的,咱们的 MongoDB 将托管在 Azure Cosmos DB。函数

首先,获取 Azure Cosmos DB 实例设置和准备使用,跟着 Azure Cosmos DB 文档页的说明。若是你尚未设置,经过这个链接建立一个 Azure 免费帐号。测试

MongoDB.NET 库容许 Xamarin 应用和 MongoDB 通讯。经过 Visual Studio 或者 Visual Studio for Mac 的 NuGet 包管理搜索 MongoDB.NET  驱动并添加到你的你全部的项目。

链接 MongoDB

接下来,咱们的应用须要链接到 MongoDB。使用 MongoClient 对象获得 IMongoDatabase 的引用。而后使用 IMongoDatabase 对象得到 IMongoCollection<T> 类的引用。(请参阅示例项目的链接代码的例子。)

了解链接过程,有助于理解 MongoDB 如何排列数据。

上面建立的 Azure Cosmos DB 帐号时第一级组织。帐号下面有一个或多个数据库(databases)。而后一个或更多的集合(collections)构成了数据库。最后一级,文档(documents)存在于集合中。

Cosmos DB MongoDB API Data Structure

为了读写文档,咱们的应用将使用 IMongoCollection<T> 类。其中泛型时咱们的模型或者是文档的强类型表现。

查询数据

咱们使用 IMongoCollection<T> 查询集合中的文档。在移动应用中,异步查询是很是重要的,能够避免阻塞 UI 线程并提供更好的用户体验。.NET的一个伟大的特性是 LINQ 查询。LINQ 帮助开发者以易于理解的语法编写复杂的查询语句,幸运的是,MongoDB 驱动彻底支持 LINQ 查询。

返回集合中每一个文档的代码以下所示:

public async Task<List<ToDoItem>> GetAllItems()
{
    var allItems = await ToDoItemsCollection
        .Find(new BsonDocument())
        .ToListAsync();
 
    return allItems;
}

上面要注意的是在 Find 函数中是 BsonDocument。指示一个空过滤器并须要返回任何文档。

AsQueryable() 扩展提供了支持 LINQ 扩展的接口,能够利用过滤器、skip 和 take 等语句。

写入数据

MongoDB.NET 库也提供了一个简单的异步数据修改 API。

像这样插入数据:

public async Task InsertItem(ToDoItem item)
{
    await ToDoItemsCollection.InsertOneAsync(item);
}

使用下面的代码更新整个文档:

public async Task UpdateItem(ToDoItem item)
{
    await ToDoItemsCollection.ReplaceOneAsync(tdi => tdi.Id == item.Id, item);
}

当用于装饰类和属性时 MongoDB 驱动定义了特性来提供附加信息。例如 [BsonId] 特性指定类中的哪一个属性应该用作主键或者标识 instance/document。

总结

MongoDB 时一个众所周知并普遍使用的文档数据库。Azure Cosmos DB 和 .NET MongoDB 驱动的结合使 Xamarin 应用成为一个可行的解决方案,这对 .NET 移动开发者来讲时比较熟悉的。

想了解更多 MongoDB 的内容,请参阅这里。阅读更多关于 Cosmos DB 上 MongoDB 的信息在这里这里提供了示例程序的测试驱动。

相关文章
相关标签/搜索