文章出處

回到目錄

我們上一講中介紹了大叔封裝的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我們還需要繼續去探索,研究...

回到目錄


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()