Serialize Documents with the C# Driver
1.介绍
该文档是1.8版本的C#驱动。
本节教程讨论C#类和BSON文档之间的序列化和反序列化。序列化是将对象映射成一个可以存储在MongoDB中的BSON文档的过程,反序列化是从一个BSON文档重新构建一个对象的过程。由于这样的原因,序列化过程也总是被用做“对象映射”。
序列化通过BSON库处理。BSON库有一个可扩展的序列化架构,所有如果你需要控制序列化,你可以做到。BSON库提供一个默认序列化,大多数时候符合你的需求。你可以以多种方式补充默认序列化,来处理你的特殊需求。
默认序列化处理器处理序列化的主要方式,是通过”class map”。一个class map是一个结构,它定义了一个类和一个BSON文档之间的映射。它包含要序列化的字段和属性,并定义了序列化的参数。
默认序列化器,也内建支持许多.NET数据类型(原生值,数组,列表,字典,等),为class mas提供支持。
在类的实例被序列化之前,要先存在class map。你既可以自己定义该class map,也可以简单允许第一次运行时,自动创建,也叫做automapping。
2.创建一个Class Map
要创建一个class map,在你的初始化代码中写:
BsonClassMap.RegisterClassMap<MyClass>();
这回导致MyClass被自动映射和注册。在本例中,你
3.创建Maps
默认地,类必须包含一个0参数的构造器,它会被用于初始化一个实例。然而,也能配置一个构造器,它的参数被映射到属性和字段。这里有一组这样的方法。
使用一个表达式,你能使得驱动使用创建器映射:
public class Person
{
public string FirstName { get; private set; }
public string LastName { get; private set; } public Person(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
} // snip... BsonClassMap.RegisterClassMap<Person>(cm =>
{
cm.AutoMap();
cm.MapCreator(p => new Person(p.FirstName, p.LastName));
});
使用属性:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; } [BsonConstructor]
public Person(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
}
当有多个构造器时,会使用更匹配的。例如:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime? BirthDate { get; set; } [BsonConstructor]
public Person(string firstName, string lastName)
{
// snip...
} [BsonConstructor]
public Person(string firstName, string lastName, DateTime birthDate)
{
// snip...
}
}
如果数据库中的文档有一个BirthData元素,我们会选择使用有3个参数的构造器,因为他更专业。
另外,
Serialize Documents with the C# Driver的更多相关文章
- MongoDB C# / .NET Driver
MongoDB C# Driver是官方提供的.NET C#驱动. Getting Started with the C# Driver C# Driver Tutorial C# Driver LI ...
- MangoDB在C#中的使用
http://blog.sina.com.cn/s/blog_927f3c2401011937.html 图形工具 http://api.mongodb.org/csharp/current/html ...
- selenium对Alert弹框的多种处理
Alert弹框是一个很烦人的控件,因为当前页面如果弹出了该弹框,你必须要处理它,不然你就不能操作页面的其它元素,下面我列出了alert弹框在多种场景下的处理办法. 明确知道系统哪个地方会弹alert ...
- 使用PhantomJS报warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '解决方法
selenium已经放弃PhantomJS了,建议使用火狐或者谷歌无界面浏览器.使用无界面浏览器Selenium+Headless Firefox Selenium+Headless Firefox和 ...
- mongodb驱动接口
mongodb对外接口或驱动:https://docs.mongodb.com/ecosystem/drivers/,包含C,C++,Go,Python等. C驱动 mongodb的C驱动,即libm ...
- 深入linux kernel内核配置选项
============================================================================== 深入linux kernel内核配置选项 ...
- MongoDB Java Driver操作指南
MongoDB为Java提供了非常丰富的API操作,相比关系型数据库,这种NoSQL本身的数据也有点面向对象的意思,所以对于Java来说,Mongo的数据结构更加友好. MongoDB在今年做了一次重 ...
- MongoDB C Driver使用教程
MongoDB C Driver使用教程 转载请注明出处http://www.cnblogs.com/oloroso/ 本指南提供简介 MongoDB C 驱动程序. 在 C API 的详细信息,请参 ...
- Ignoring Extra Elements in mongoDB C# Driver
MongoDB删除字段后会报错: Element ... does not match any field or property of class Customer. 需要在实体类增加 [BsonI ...
随机推荐
- JBOSS /invoker/JMXInvokerServlet 利用工具 .
链接: http://pan.baidu.com/s/1F8bMI 密码: 1h2r 工具使用说明 1. 查看系统名称 java -jar jboss_exploit_fat.jar -i http: ...
- TFS 2013 配置的时候,提示TF255466错误
TFS 2010 配置的时候,提示TF255466错误 花舞花落泪 2013-11-08 10:19:37 在验证是否可以安装 SharePoint 时的提示,Error [ System Chec ...
- Windows Server 2008 R2 域控修改域用户密码复杂性
1.进入”本地安全策略”进行管理时,发现密码策略已经被锁定,无法更改: 2.在此情况下要改密码策略的过程如下, 进入组策略管理: 3.右键点击/编辑Default Domain Policy: 4.在 ...
- ORACLE数据库用户账号处于expired状态如何处理
账户过期,必须要用户更改密码, 账户才能重新使用. 但有些时候, 因为各种原因, 我们并不知道原密码的明文是什么,但很多时候又不能修改已有密码,好在可以用原密码来更改密码. 在11G中,dba_use ...
- zend optimizer在wamp的基础上安装
在用wampserver集成开发环境下,有时会碰到一些开源程序需要zend optimizer的支持,下面我用的wamp的版本是2.0,optimizer的版本是ZendOptimizer-3.3.3 ...
- JMX超详细解读
一.JMX的定义 JMX(Java Management Extensions)是一个为应用程序植入管理功能的框架.JMX是一套标准的代理和服务,实际上,用户可以在任何Java应用程序中使用这些代理和 ...
- Java String类详解
Java String类详解 Java字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类,很多时候,我们对它既熟悉又陌生. 类结构: public final ...
- Leetcode: Self Crossing
You are given an array x of n positive numbers. You start at point (0,0) and moves x[0] metres to th ...
- [转]easyui data-options的使用
原文地址:easyui data-options的使用 data-options是jQuery Easyui 最近两个版本才加上的一个特殊属性.通过这个属性,我们可以对easyui组件的实例化可以完全 ...
- oracle 密码忘记、密码遗失解决办法
忘了密码可以用操作系统验证方式登入SYS用,然后可以随意修改密码了.登入方法:1.进入命令提示符下,输入:sqlplus /nolog 回车进入SQL.2.在SQL环境下,输入:SQL> con ...