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 号开始 ...
随机推荐
- php中的echo 与print 、var_dump 的区别
· echo - 可以输出一个或多个字符串 · print - 只允许输出一个字符串,返回值总为 1 提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1. ...
- git 远程
git remote add origin [远程仓库地址]
- this在java中的用法
this在java中的用法 1.使用this关键字引用成员变量 作用:解决成员变量与参数或局部变量命名冲突的问题 public class Dog { String name; public Dog( ...
- Springboot 学习教程(一):版本+ jdk 版本 + Maven 版本的匹配
Spring boot 版本 Spring Framework jdk 版本 maven 版本 1.2.0 版本之前 6 3.0 1.2.0 4.1.3+ 6 3.2+ 1.2.1 4.1.3+ ...
- 学号 20175201张驰 《Java程序设计》第5周学习总结
学号 20175201张驰 <Java程序设计>第5周学习总结 教材学习内容总结 第六章 ·1.接口的接口体中只可以有常量和abstract方法. ·2.和类一样,接口也是Java中一种重 ...
- 创建存储过程 in,out,inout
in: 输入参数,存储过程如果修改了参数值,那么不能被返回. out:输出参数,存储过程中修改了参数值,可以被返回.inout:输入参数,存储过程如果修改了参数值,可以被返回 注意参数格式: in ...
- string函数详解(配案例)
多说无益上码~ #include<iostream> #include<algorithm> #include<cmath> #include<cstring ...
- kali,parrot最新更新debain源
deb http://mirrors.163.com/debian/ jessie main non-free contribdeb http://mirrors.163.com/debian/ je ...
- python实现使用词云展示图片
记录瞬间 首先,要安装一些第三方包 pip install scipyCollecting scipy Downloading https://files.pythonhosted.org/packa ...
- 在Ubuntu16.04中python环境下实现tab键补全
1.编写tab.py的代码: 1 #!/usr/bin/env python 2 # python startup file 3 import sys 4 import readline 5 impo ...