回到目录
我们上一讲中介绍了大叔封装的Mongo仓储,其中介绍了几个不错的curd操作,而对于按需更新内部子对象,它是有条件的,即你的子对象不能为null,也就是说,我们在建立主对象时,应该为子对象赋一下初值,即new一下它,呵呵.
正确的mongo集合
对于赋过初值的子对象,在按需要更新时,有以下两种要注意一下
1 子对象的_id,如果已经存在,就更新它的值
2 子对象的_id,如果不存在,或者没有显示为_id赋值,则添加一条新的记录,即_id从新生成
而对于实体更新不存在这个问题,实体里的值会覆盖掉原表的值,下面看一下按需要更新的代码
#region 按需更新
repository1.Update<Person>(i => new Person
{
Id = "556d531e2683c818c86caddb",
Address = new Address
{
Id = "556d531e2683c818c86ca123",/*不加id(或者id没有在集合中存在)就是向列表添加一条元素,id存在则更新指定的元素*/
Province = "luanxian",
City = "111湖南占占大师",
District = "小区",
Seconds = 1
},
AddList = new List<Address>() {
new Address
{
/*不加id(或者id没有在集合中存在)就是向列表添加一条元素,id存在则更新指定的元素*/
Id="556d531e2683c818c86cadde",
Province = "luanxian",
City = "湖南占占大师ddd",
District = "小区",
Seconds = 1
}}
});
#endregion
对于整个更新,还是同样的问题,当然前提需要把表记录从库中获出来
#region 完整更新
var e1 = repository1.Find("556d531e2683c818c86caddb");
e1.Name = "wet";
e1.Address.City = "北京123";
/*遍历原来的集合,批量赋值*/
e1.AddList.ForEach(i =>
{
i.City = "大占占";
});
/*为每个对象分别赋值,不指定ID被自动生成*/
e1.AddList = new List<Address> {
new Address{City="占占1"},
new Address{City="占占2"}
};
repository1.Update(e1);
#endregion
对于MonoDB我们还需要继续去探索,研究...
作者:仓储大叔,张占岭,
荣誉:微软MVP
QQ:853066980
支付宝扫一扫,为大叔打赏!
