你的位置:首页 > 数据库

[数据库]MongoDB学习笔记~大叔框架实体更新支持N层嵌套~递归递归我爱你!


回到目录

递归递归我爱你!保要你想做,就一定能成功!

从一到二,从二到三,它是容易的,也是没什么搞高的,或者说,它是一种流水线的方式,而从三到十,它注定要有一个质的突破,否则,它会把你累死,代码写的让你自己都觉得想吐!有时,我们是被逼出来的,对于一种功能的实现,我们有时需要有从三到十的态度……

回归回实例,在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


最后的结果,当然是在N层失败之后,取得了成功,呵呵!

 

印度旅游路线报价费用印度旅游哪里好玩呢印度旅游签证怎么办理印度旅游去哪好印度旅游团报价优惠国庆新疆八天自助游游记 国内赏菊好去处推荐—四大赏菊景点 泰国自助旅游攻略2015 10月去尼泊尔旅游攻略 翠华游什么好吃的?翠华必吃菜式有哪些? 老年人去迪斯尼或南丫岛合适吗?还是有什么好地方推荐? 香港公厕多吗?内急怎么办? 香港拜神祈福的地方有哪些? 第一山亭 摩崖石刻 峨眉山武术节 九寨沟长海 清远阳山神笔仙洞好玩吗? 中山新月城好玩吗? 广州长隆国际马戏大剧院自驾游怎走? 中山新月城怎么走? BC556B,112 Datasheet BC556B,112 Datasheet BC556B,116 Datasheet BC556B,116 Datasheet BC556BBU Datasheet BC556BBU Datasheet 珠海自助游 珠海自助游 珠海自助游 马蜂窝旅行攻略 马蜂窝旅行攻略 马蜂窝旅行攻略 槟榔谷攻略 槟榔谷攻略 槟榔谷攻略