c# mongodb drive IngoreExtraElements and RegisterClassMap
private static void RegisterClassMaps(IEnumerable<Type> clrTypes)
{
foreach (var clrType in clrTypes)
{
if (clrTypes.Any(x => x.BaseType.Name == clrType.Name))
{
var genericSetIsRootClassMethod = MongoDBDataServiceFactorySetIsRootClassMethod.MakeGenericMethod(clrType);
var genericBsonClassMap = typeof(BsonClassMap<>).MakeGenericType(clrType);
var actionT = typeof(Action<>).MakeGenericType(genericBsonClassMap);
var @delegate = Delegate.CreateDelegate(actionT, genericSetIsRootClassMethod); RegisterClassMapWithExpressionMethod.MakeGenericMethod(clrType).Invoke(typeof(BsonClassMap), new object[] { @delegate });
}
else
{
RegisterClassMapWithoutExpressionMethod.MakeGenericMethod(clrType).Invoke(typeof(BsonClassMap), new object[] { });
}
}
} private static void SetIsRootClass<T>(BsonClassMap<T> map)
{
map.SetIsRootClass(true);
} // 忽略未绑定字段, 例如 mongodb 自带的 _id,否则查询时反序列化会报错,提示在 type 中找不到 _id 字段
private static void IgnoreExtraElements()
{
var pack = new ConventionPack
{
new IgnoreExtraElementsConvention(true)
};
ConventionRegistry.Register("My Solution Conventions", pack, t => true);
} private static readonly MethodInfo RegisterClassMapWithExpressionMethod = typeof(BsonClassMap).GetMethods().Where(x => x.Name == nameof(BsonClassMap.RegisterClassMap)).ToList()[];
private static readonly MethodInfo RegisterClassMapWithoutExpressionMethod = typeof(BsonClassMap).GetMethods().First(x => x.Name == nameof(BsonClassMap.RegisterClassMap));
private static readonly MethodInfo MongoDBDataServiceFactorySetIsRootClassMethod = typeof(MongoDBDataServiceFactory).GetMethod(nameof(MongoDBDataServiceFactory.SetIsRootClass), BindingFlags.NonPublic | BindingFlags.Static);
c# mongodb drive IngoreExtraElements and RegisterClassMap的更多相关文章
- MongoDB 安装(Window/Linux)
MongoDB安装在Windows上 在 Windows上,首先要安装 MongoDB下载最新发布的MongoDB: http://www.mongodb.org/downloads 确保得到正确的版 ...
- Data Base MongoDB 无法创建抽象类的问题,
无法创建抽象类BsonClassMap.RegisterClassMap 大家都知道抽象类是无法实例化的,即:不能new. 在以下这些情况会遇到这种问题: 1.基类是抽象类: 2.基类是接口: 由于 ...
- 集算器协助java处理多样性数据源之MongoDB
MongoDB不支持join,其官网上推荐的unity jdbc可以把数据取出来进行二次计算实现join运算,但这些join.group.函数.表达式等高级功能都是收费版才有,而且即使是收费版本,对子 ...
- MongoDB (三) MongoDB 安装
MongoDB安装在Windows上 在 Windows上,首先要安装 MongoDB下载最新发布的MongoDB: http://www.mongodb.org/downloads 确保得到正确的版 ...
- MongoDB Long/Int(长整型)的自增长主键 解决方案
今朝有幸尝芒果,发现自增长ID类型有多种,唯独没有Long/Int. 一思路:1. 自建一个Collection(表,假设名为:IdentityEntity,其中字段:_id, Key, Value, ...
- MongoDB学习(翻译5)
C#驱动序列化文档对象 介绍 本文档基于C#官方驱动1.8版本. 本节C#驱动教程谈论C#类到BSON对象的序列化和反序列化.序列化是映射一个对象到可保存到MongoDB库中BSON对象的过程,反序列 ...
- 每篇半小时1天入门MongoDB——2.MongoDB环境变量配置和Shell操作
上一篇:每篇半小时1天入门MongoDB——1.MongoDB介绍和安装 配置环境变量 Win10系统为例 右键单击“此电脑”——属性——高级系统设置——高级——环境变量,添加C:\Program F ...
- MongoDB安装与配置
参考文档:MongoDB官方文档 版本:3.6.4 从版本3.6开始,MongoDB需要Windows Server 2008 R2,Windows 7或更高版本. 第一步,在下载中心下载最新版本的M ...
- MongoDB十二种最有效的模式设计【转】
持续关注MongoDB博客(https://www.mongodb.com/blog)的同学一定会留意到,技术大牛Daniel Coupal 和 Ken W. Alger ,从 今年 2月17 号开始 ...
随机推荐
- [译]《Sphinx权威指南》 - Sphinx入门
本章中,我们会讨论到Sphinx基础的安装.配置和维护.不要被“基础”这形容词糊弄而跳过这个章节.对于“基础”,我不是指简单到显而易见的东西,而是指所有人都会用到的功能. 一般来说,Sphinx会使用 ...
- 解决python tkinter 与 sleep 延迟问题
多线程(threading——join) join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后, 才可以接着 ...
- boost中打印python中的变量
p::extract<char const *>(p::str(py_variable))
- 修改haproxy配置文件
需求: 1.查 输入:www.oldboy.org 获取当前backend下的所有记录 2.新建 输入: arg = { 'bakend': 'www.oldboy.org', 'record':{ ...
- 打开eclipse "Initializing Java Tooling"错误
问题:打开eclipse初始化界面过程中弹出An internal error occurred during: "Initializing Java Tooling". java ...
- arcgis 画图工具
arcgis 4.x系列JavaScript API在4.4及以前的版本对画图工具(Draw)是不支持的,自4.5版本后才提供Draw的类.相关连接:https://developers.arcgis ...
- 北京大学Cousera学习笔记--3-计算导论与C语言基础-第一讲.计算机的基本原理-计算机怎么计算-数的二进制
思考问题 1.“数”在计算机中是如何表示的? 2.逻辑上“数”是怎么运算的? 3.物理上“数”的计算是怎么实现的? 从图灵机计算问题得出: 1.字母表中的符号越多(几进制),读入移动次数减少,但程序数 ...
- Redis4.0 之持久化存储
redis如果提供缓存服务,可以关闭所有持久化存储,如此一来redis重启后所有数据会丢失 开启rdb或aof持久化存储,能把redis中的数据持久化到磁盘中. rdb和aof对性能都有影响,所以建议 ...
- Qt QML 2D shader
--------------------------------------------------- Qt quick 2d shader effect ---------------------- ...
- angularjs简单介绍和特点
首先angular是一个mvc框架, 使用mvc解耦, 采用model, controller以及view的方式去组织代码, 会将一个html页面分成若干个模块, 每个模块都有自己的scope, se ...