回到目錄
我們上一講中介紹了大叔封裝的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
支付寶掃一掃,為大叔打賞!
