当前位置: 首页 > news >正文

vs网站开发效果图网站与域名

vs网站开发效果图,网站与域名,十大免费货源网站免费版本,南县网站建设在实际更新Mongo对象时发现#xff0c;原有的更新代码无法更新复杂的数据类型对象。恰好看到张占岭老师有对该方法做相关的改进#xff0c;因此全抄了下来。 总的核心思想就是运用反射与递归#xff0c;对对象属性一层一层挖掘下去#xff0c;循环创建父类及之类的更新表达…在实际更新Mongo对象时发现原有的更新代码无法更新复杂的数据类型对象。恰好看到张占岭老师有对该方法做相关的改进因此全抄了下来。 总的核心思想就是运用反射与递归对对象属性一层一层挖掘下去循环创建父类及之类的更新表达式。 相关代码如下 #region 递归获取字段更新表达式private ListUpdateDefinitionT GetUpdateDefinitionsT(T entity) {var type typeof(T);var fieldList new ListUpdateDefinitionT();foreach (var property in type.GetProperties(BindingFlags.Instance | BindingFlags.Public)){GenerateRecursionT(fieldList, property, property.GetValue(entity), entity, );}return fieldList; }private void GenerateRecursionTEntity(ListUpdateDefinitionTEntity 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 0){for (int index 0; 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);elseGenerateRecursion(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);elseGenerateRecursion(fieldList, sub, sub.GetValue(propertyValue), item, father . property.Name);}}}//简单类型else{if (property.Name ! _id)//更新集中不能有实体键_id{if (string.IsNullOrWhiteSpace(father))fieldList.Add(BuildersTEntity.Update.Set(property.Name, propertyValue));elsefieldList.Add(BuildersTEntity.Update.Set(father . property.Name, propertyValue));}} }/// summary /// 构建Mongo的更新表达式 /// /summary /// param nameentity/param /// returns/returns private ListUpdateDefinitionT GeneratorMongoUpdateT(T item) {var fieldList new ListUpdateDefinitionT();foreach (var property in typeof(T).GetProperties(BindingFlags.Instance | BindingFlags.Public)){GenerateRecursionT(fieldList, property, property.GetValue(item), item, string.Empty);}return fieldList; }#endregion View Code   在实际应用过程中有几点要注意一下 1.在对象创建时就要将对象中的数组属性初始化否则在更新时无法插入子项。 public class Users : MongoObj {public Users() {Subs new ListSub();Spell new Listint();}public string ObjectId_id { get; set; }public string Name { get; set; }public string Sex { set; get; }public Listint Spell { get; set; }public ListSub Subs { get; set; } } 2.如果数组是一个复杂对象数据那么要给对象添加一个_id,并且在对象初始化时就给_id赋值。 public class Sub {public Sub() { _id MongoDB.Bson.ObjectId.GenerateNewId().ToString();}public string _id { get; set; }public string aa {get;set;}public string bb{get;set;} } 3.实际使用的时候发现无法对数组的子项做删除。   比如删除Subs中的第一个子项后再到mongo里面查询发现第一个子项仍然存在。    暂时还没有好的解决方法如果有涉及到数组子项的删除操作都是将整个对象删掉然后再重新插入简单粗暴。  转载于:https://www.cnblogs.com/nonkicat/p/5581726.html
http://www.pierceye.com/news/800441/

相关文章:

  • 首饰网站建设策划案我的主页制作代码
  • 网站专题页面模板科技有限公司可以做网站建设吗
  • 物流企业网站建设特色吉林智能网站建设价格
  • 安徽省教育基本建设学会网站光明新区建设网站
  • 图片无法显示wordpress我是seo关键词
  • 设计商标的网站最新的电商资讯有哪些
  • 烟台开发区网站建设做家教中介网站赚钱吗
  • 商洛市建设工程造价管理站网站网站无障碍建设报告
  • 网站如何做原创广州网站优化关键词公司
  • 海门市城乡建设局网站深圳专业做网站专业
  • 网站首页的快照更新慢凉山建设机械网站
  • 怎么区分营销型网站如何建立公司的网站
  • 宁波网站建设鲤斯设计游戏网站上图片动态怎么做的
  • 重庆php网站建设网站ip地址 转向域名
  • 知名的电子商务网站从化手机网站建设
  • 钓鱼网站 企业形象做一婚恋网站多少钱
  • 南阳网站建设公司wordpress视频无法播放视频
  • 广西防城港建设厅网站wordpress导航栏修改
  • 网站建设桂林永川网站建设公司
  • 英文网站设计制作wordpress搜索不到
  • 企业营销网站建设的基本步骤吉林省建设工程质量监督站网站
  • 现在用什么软件做网站北京工程设计公司排名
  • 烟台网站开发技术找人做网站服务器不是自己的怎么办
  • 网站样式下载pc网站建设的优势是什么
  • 网站是怎么建设的网页制作基础教程第2版葛艳玲答案
  • 企业做一个网站的费用网站设计专业需要什么
  • 昆山住房和城乡建设部网站网站开发用的工具
  • 广州优化网站建设网站建设是怎么赚钱
  • 公司建设网站公司系统软件开发培训机构
  • 小程序分销系统开发成熟的网站怎么做seo推广