日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MongoDB学习笔记~MongoDB实体中的值对象

發布時間:2025/3/20 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MongoDB学习笔记~MongoDB实体中的值对象 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

回到目錄

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

看一個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在Person中就是個值對象,它沒有Id,它只是對Person的補充,即,它是一種聯系方式的封裝,注意,在MongoDB實體中,建立主對象時,一定要為值對象和關系對象賦值,這是必要的,當然賦值后,值對象的值為空,這也是正常的,也是必要的,如果不為它

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

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

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

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

MongoDB等待大家去探索,研究...

回到目錄

?

轉載于:https://www.cnblogs.com/lori/p/4548934.html

總結

以上是生活随笔為你收集整理的MongoDB学习笔记~MongoDB实体中的值对象的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。