使用MongoDB c# API的一些编码模式

在MSDN杂志2019年2月刊(利用Azure Cosmos DB的API对MongoDB进行多模型性能的研究),我的Data Points专栏探索了如何使用Azure Cosmos DB的MongoDB模型mongocsharpdriver。我首先处理MongoDB的一个本地实例,然后处理Azure实例。但是这个专栏有点长,所以我剪掉了一些无关的部分。所以我把它们放在这里,并从文章链接到这个博客文章。

在本文中,我使用了一个IMongoCollection对象来查询数据并将数据存储到数据库中。必须为要序列化和反序列化的集合对象指定类型。在这篇文章中,我把收藏打给我的班级,例如,集合 。还可以将集合一般地键入BsonDocument。这里有一些关于它的信息和一些代码。

将集合键入BsonDocument

映射的另一个路径是使用不依赖于特定类型的BsonDocument类型化集合对象。这将允许您拥有更多的泛型方法。但它也意味着手动序列化和反序列化对象,这是很容易使用ToBsonDocument序列化:

var coll = db.GetCollection
         
          (“船”);coll.InsertOne (ship.ToBsonDocument());
         

考虑到这些文件有鉴别器,然后,您可以在查询中指定一个类型来检索特定类型,尽管,默认情况下,层次结构没有得到解释。本文引用了关于c# API多态性的文档。以下是链接。检查了解如何更详细地正确实现多态性。以下代码将仅在与配置的识别器匹配的情况下收回文档,这些识别器用于船载和退役船载到DSHIPS:

var coll = db.GetCollection
         
          (“船”);var ships = coll.asquerizable ().OfType
          
           ().ToList ();var dShips = coll.asquerizable () .OfType
           
            ().ToList ();
           
          
         

封装MongoClient,数据库和收集

重复指定类型化集合实例,正如我在演示文章中所做的,会成为累赘。你可以提前安排,例如,在充当与数据库交互的上下文的类中,如下所示:

public class expansecontext public imongodatabase expansedb get;私人设置;公共IMongoCollection}
         
          船只{得到;私人设置;公共IMongoCollection}
          
           {ExpanseDb=new MongoClient().GetDatabase("ExpanseDatabase");船舶=expansedb.getCollection
           
            (“船”);字符= ExpanseDb.GetCollection
            
             (“船”);}}
            
           
          
         

用于插入文档的重构代码可读性更高:

私有静态void InsertViaContext () {var context = new ExpanseContext ();var ship=新船name=“Agatha King”};context.Ships.InsertOne (ship);}

ios万博体育app下载 报名参加我的时事通讯所以你不会错过我的会议和多元化视野课程公告!

一个想法"使用MongoDB c# API的一些编码模式

留下一个回复

您的电子邮件地址将不会被公布。必填字段已标记*

这个站点使用Akismet来减少垃圾邮件。了解如何处理您的评论数据