MongoDB学习笔记~大叔框架实体更新支持N层嵌套~递归递归我爱你!
递归递归我爱你!只要你想做,就一定能成功!
从一到二,从二到三,它是容易的,也是没什么可搞的,或者说,它是一种流水线的方式,而从三到十,从十到百,它注定要有一个质的突破,否则,它会把你累死,代码写的让你自己都觉得想吐!有时,我们是被逼出来的,对于一种功能的实现,我们有时需要有从三到十的态度中,就像0的出现是人类最大的突破之一……
回归到实例,在MongoDB中实体可以嵌套,这在C#里叫做复杂属性,即类中也有类级的属性,这在面向对象里叫做“组合”(设计模式中的组合模式),它经常在日常开发环境中见到,大家都耳熟能详了,呵呵,而在mongodb里,如果希望对N层嵌套的类型进行update操作,这绝对不是一件容易的事,最起码在大叔框架里,在面向linq的语法里,它并不容易,但经过大叔的努力,和对递归的依赖,把这个问题解决了!
这才有今天的文章:递归递归我爱你!
一 从超级变态的类开始
public class Person : Base
{ public Person()
{
Contact = new Test.Contact();
OrderList = new List<Order>();
} public string Name { get; set; }
public DateTime LastContact { get; set; }
public DateTime Birthday { get; set; }
public int Age { get; set; } #region 值对象
/// <summary>
/// 统计
/// </summary>
public Total Total { get; set; }
/// <summary>
/// 联系方式和地址
/// </summary>
public Contact Contact { get; set; }
#endregion #region 列表实体
public List<Order> OrderList { get; set; }
#endregion
}
public class Section
{
public string SectionID { get; set; }
public string SectionName { get; set; }
}
public class Area
{
public Area()
{
Section = new Section();
}
public string Province { get; set; }
public string City { get; set; }
public string District { get; set; } public Section Section { get; set; }
}
public class Contact
{
public Contact()
{
Area = new Area();
}
public string PostCode { get; set; }
public string Email { get; set; }
public string Phone { get; set; } public Area Area { get; set; }
}
public class Total
{
public int Count { get; set; }
public int Max { get; set; }
}
public class Order
{
public Order()
{
Id = MongoDB.Bson.ObjectId.GenerateNewId().ToString();
this.OrderDetail = new List<OrderDetail>();
this.User_Info = new User_Info();
}
public string UserId { get; set; }
public string UserName { get; set; }
public string Id { get; set; }
public double Price { get; set; }
public DateTime AddTime { get; set; } public User_Info User_Info { get; set; }
public List<OrderDetail> OrderDetail { get; set; }
} public class User_Info
{
public User_Info()
{
Id = MongoDB.Bson.ObjectId.GenerateNewId().ToString();
}
public string Id { get; set; }
public string Name { get; set; }
} public class OrderDetail
{
public OrderDetail()
{
Id = MongoDB.Bson.ObjectId.GenerateNewId().ToString();
}
public string Id { get; set; }
public string OrderId { get; set; }
public string ProductName { get; set; }
public int Count { get; set; }
public double Price { get; set; }
public string SellerId { get; set; }
}
看到上面的类,绝对够你喝一壶的,呵呵,这是一个复杂的类型People,它有实体属性contact和列表属性OrderList
aaarticlea/png;base64,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" alt="" />
而对于之前大叔的框架里,这种结构是不被支持的,大叔只能支持到3级嵌套,但这显然是不够的,最后大叔硬着头皮冲了上来,把这个骨头啃掉了,哈哈!
下面贡献我的Recursion代码
/// <summary>
/// 递归构建Update操作串
/// </summary>
/// <param name="fieldList"></param>
/// <param name="property"></param>
/// <param name="propertyValue"></param>
/// <param name="item"></param>
/// <param name="father"></param>
private void GenerateRecursion(
List<UpdateDefinition<TEntity>> fieldList,
PropertyInfo property,
object propertyValue,
TEntity item,
string father)
{
//复杂类型
if (property.PropertyType.IsClass && property.PropertyType != typeof(string) && propertyValue != null)
{
//集合
if (typeof(IList).IsAssignableFrom(propertyValue.GetType()))
{
foreach (var sub in property.PropertyType.GetProperties(BindingFlags.Instance | BindingFlags.Public))
{
if (sub.PropertyType.IsClass && sub.PropertyType != typeof(string))
{
var arr = propertyValue as IList;
if (arr != null && arr.Count > )
{
for (int index = ; index < arr.Count; index++)
{
foreach (var subInner in sub.PropertyType.GetProperties(BindingFlags.Instance | BindingFlags.Public))
{
if (string.IsNullOrWhiteSpace(father))
GenerateRecursion(fieldList, subInner, subInner.GetValue(arr[index]), item, property.Name + "." + index);
else
GenerateRecursion(fieldList, subInner, subInner.GetValue(arr[index]), item, father + "." + property.Name + "." + index);
}
}
}
}
}
}
//实体
else
{
foreach (var sub in property.PropertyType.GetProperties(BindingFlags.Instance | BindingFlags.Public))
{ if (string.IsNullOrWhiteSpace(father))
GenerateRecursion(fieldList, sub, sub.GetValue(propertyValue), item, property.Name);
else
GenerateRecursion(fieldList, sub, sub.GetValue(propertyValue), item, father + "." + property.Name);
}
}
}
//简单类型
else
{
if (property.Name != EntityKey)//更新集中不能有实体键_id
{
if (string.IsNullOrWhiteSpace(father))
fieldList.Add(Builders<TEntity>.Update.Set(property.Name, propertyValue));
else
fieldList.Add(Builders<TEntity>.Update.Set(father + "." + property.Name, propertyValue));
}
}
} /// <summary>
/// 构建Mongo的更新表达式
/// </summary>
/// <param name="entity"></param>
/// <returns></returns>
private List<UpdateDefinition<TEntity>> GeneratorMongoUpdate(TEntity item)
{
var fieldList = new List<UpdateDefinition<TEntity>>();
foreach (var property in typeof(TEntity).GetProperties(BindingFlags.Instance | BindingFlags.Public))
{
GenerateRecursion(fieldList, property, property.GetValue(item), item, string.Empty);
}
return fieldList;
}
最后的结果,当然是在N层失败之后,取得了成功,呵呵!
aaarticlea/png;base64,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" alt="" />
最后,送给大家一句,多看看数据结构和算法,对各位在程序开发领域,一定有非常大的帮助,最起码在看问题的角度上,会有更多的,更合理的选择!
MongoDB学习笔记~大叔框架实体更新支持N层嵌套~递归递归我爱你!的更多相关文章
- MongoDB学习笔记~大叔分享批量添加—批量更新—批量删除
回到目录 说它是批量操作,就是说将集合对象一次提交到服务器,并对数据进行持久化,如果您的代码是一次一次的提交,那不算是批量操作!在之前的mongodb仓储中并没有对批量更新和批量删除进行实现,而今天在 ...
- MongoDB学习笔记~为IMongoRepository接口更新指定字段
回到目录 对于MongoDB来说,它的更新建议是对指定字段来说的,即不是把对象里的所有字段都进行update,而是按需去更新,这在性能上是最优的,这当然也是非常容易理解的,我们今天要实现的就是这种按需 ...
- MongoDB学习笔记~数据结构与实体对象不一致时,它会怎么样?
回到目录
- MongoDB学习笔记系列
回到占占推荐博客索引 该来的总会来的,Ef,Redis,MVC甚至Sqlserver都有了自己的系列,MongoDB没有理由不去整理一下,这个系列都是平时在项目开发时总结出来的,希望可以为各位一些帮助 ...
- MongoDB学习笔记系列~目录
MongoDB学习笔记~环境搭建 (2015-03-30 10:34) MongoDB学习笔记~MongoDBRepository仓储的实现 (2015-04-08 12:00) MongoDB学习笔 ...
- MongoDB学习笔记:快速入门
MongoDB学习笔记:快速入门 一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...
- mongoDB 学习笔记纯干货(mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)
最后更新时间:2017-07-13 11:10:49 原始文章链接:http://www.lovebxm.com/2017/07/13/mongodb_primer/ MongoDB - 简介 官网: ...
- MongoDB学习笔记:MongoDB 数据库的命名、设计规范
MongoDB学习笔记:MongoDB 数据库的命名.设计规范 第一部分,我们先说命名规范. 文档 设计约束 UTF-8 字符 不能包含 \0 字符(空字符),这个字符标识建的结尾 . 和 $ ...
- MongoDB 学习笔记(原创)
MongoDB 学习笔记 mongodb 数据库 nosql 一.数据库的基本概念及操作 SQL术语/概念 MongoDB术语/概念 解释/说明 database database 数据库 table ...
随机推荐
- 探秘Tomcat——一个简易的Servlet容器
即便再简陋的服务器也是服务器,今天就来循着书本的第二章来看看如何实现一个servlet容器. 背景知识 既然说到servlet容器这个名词,我们首先要了解它到底是什么. servlet 相比你或多或少 ...
- 微信扫码支付+Asp.Net MVC
这里的扫码支付指的是PC网站上面使用微信支付,也就是官方的模式二,网站是Asp.net MVC,整理如下.(demo在最下方) 一.准备工作 使用的微信API中的统一下单方法,关键的参数是‘公众账号I ...
- Java多线程学习笔记
进程:正在执行中的程序,其实是应用程序在内存中运行的那片空间.(只负责空间分配) 线程:进程中的一个执行单元,负责进程汇总的程序的运行,一个进程当中至少要有一个线程. 多线程:一个进程中时可以有多个线 ...
- Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...
- Windows Phone 如何在程序中播放提示声音?
在Windows Phone 中播放提示音可以使用 Microsoft.Xna.Framework.Audio 命名空间下的 SoundEffect 类.具体使用方法如下: 1. 根据声音文件路径创建 ...
- 我的angularjs源码学习之旅1——初识angularjs
angular诞生有好几年光景了,有Google公司的支持版本更新还是比较快,从一开始就是一个热门技术,但是本人近期才开始接触到.只能感慨自己学习起点有点晚了.只能是加倍努力赶上技术前线. 因为有分析 ...
- Quartz.net 开源job调度框架(一)
Quartz.NET是一个开源的作业调度框架,非常适合在平时的工作中,定时轮询数据库同步,定时邮件通知,定时处理数据等. Quartz.NET允许开发人员根据时间间隔(或天)来调度作业.它实现了作业和 ...
- linux全方位掌握一个命令--思路比方法更重要
Linux命令众多,当不清楚一个命令的使用方法时,我们该怎样了解命令的属性和帮助? 1.用type命令了解一个命令的属性 [root@zejin240 testdir]# type cd cd ...
- web性能优化:详说浏览器缓存
TOC 背景 浏览器的总流程图 一步一步说缓存 朴素的静态服务器 设置缓存超时时间 html5 Application Cache Last-Modified/If-Modified-Since Et ...
- 微信浏览器是移动端的IE6?微信升级内核后Html5和CSS3兼容性总结
今年4月,自从微信浏览器X5 升级Blink内核之后,各前端社区一片高潮,仿佛看到了前端er,眼含热泪进而抱头痛头的说:终于可以不用兼容这"移动端的IE6 "了,可以早点回家了!! ...