中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

MongoDB學習筆記~MongoDB實體中的(de)值對(dui)象(xiang)

回到目錄

注意,這里說的值對象是指在MongoDB實體類中的,并不是DDD中的值對象,不過,兩者也是聯系,就是它是對類的補充,自己本身沒有存在的價值,而在(zai)值對(dui)象(xiang)(xiang)中,也(ye)(ye)(ye)是不需要(yao)有主鍵(jian)Id的,這與DDD也(ye)(ye)(ye)是不謀而合的,也(ye)(ye)(ye)是可以理(li)解的,因(yin)為它只是對(dui)主對(dui)象(xiang)(xiang)的一種(zhong)補(bu)充說明,自己不存在(zai)任何意義,所以要(yao)主鍵(jian)也(ye)(ye)(ye)沒(mei)什么用,呵(he)(he)呵(he)(he).

看一個MongoDB的值對象contact

    public class Person
    {

        public Person()
        {
            Contact = new Test.Contact();
            AddList = new List<Test.Address>();
            Id = MongoDB.Bson.ObjectId.GenerateNewId().ToString();
        }

        [BsonId]
        [BsonRepresentation(BsonType.ObjectId)]
        public string Id { get; set; }
        public string Name { get; set; }
        public DateTime LastContact { get; set; }
        public DateTime Birthday { get; set; }
        public int Age { get; set; }

        public Address Address { get; set; }
        public List<Address> AddList { get; set; }
        /// <summary>
        /// 值對象
        /// </summary>
        public Contact Contact { get; set; }

    }

    public class Contact
    {
        public string Address { get; set; }
        public string PostCode { get; set; }
        public string Email { get; set; }
    }

大家看到Contact在(zai)Person中(zhong)就(jiu)是(shi)個值(zhi)對(dui)象(xiang)(xiang),它沒有Id,它只是(shi)對(dui)Person的(de)(de)補(bu)充(chong),即,它是(shi)一種聯系(xi)方式的(de)(de)封裝(zhuang),注意,在(zai)MongoDB實體中(zhong),建立(li)主對(dui)象(xiang)(xiang)時,一定要為值(zhi)對(dui)象(xiang)(xiang)和關系(xi)對(dui)象(xiang)(xiang)賦值(zhi),這是(shi)必要的(de)(de),當然賦值(zhi)后,值(zhi)對(dui)象(xiang)(xiang)的(de)(de)值(zhi)為空(kong),這也(ye)是(shi)正常的(de)(de),也(ye)是(shi)必要的(de)(de),如(ru)果不為它

賦值,那(nei)么mongodb是不讓你去update的(de)(de)(c# driver是這樣(yang)的(de)(de))

在對值對象賦值時,我們可以按字段賦值,也可以按對象去賦值,按對象賦值,它對將原對象覆蓋!

            var e1 = repository1.Find("556e8f2c2683c8105c9e501f");
            e1.Name = "wet";
            e1.Contact.PostCode = "100001";//為字(zi)段賦值(zhi)
            e1.Contact = new Contact { Email = "bfyxzls@sina.com" };//為實體(ti)賦(fu)值,原實體(ti)被覆蓋
            repository1.Update(e1);

更新的結果(guo),只有Email字段(duan)有值,其(qi)它字段(duan)被覆蓋,這是正常的

MongoDB等待大(da)家(jia)去(qu)探(tan)索,研究...

回到目錄

 

posted @ 2015-06-03 13:42  張占嶺  閱讀(4246)  評論(0)    收藏  舉報