MongoDB学习笔记~MongoDB实体中的值对象
回到目錄
注意,這里說(shuō)的值對(duì)象是指在MongoDB實(shí)體類中的,并不是DDD中的值對(duì)象,不過(guò),兩者也是聯(lián)系,就是它是對(duì)類的補(bǔ)充,自己本身沒(méi)有存在的價(jià)值,而在值對(duì)象中,也是不需要有主鍵Id的,這與DDD也是不謀而合的,也是可以理解的,因?yàn)樗皇菍?duì)主對(duì)象的一種補(bǔ)充說(shuō)明,自己不存在任何意義,所以要主鍵也沒(méi)什么用,呵呵.
看一個(gè)MongoDB的值對(duì)象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>/// 值對(duì)象/// </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中就是個(gè)值對(duì)象,它沒(méi)有Id,它只是對(duì)Person的補(bǔ)充,即,它是一種聯(lián)系方式的封裝,注意,在MongoDB實(shí)體中,建立主對(duì)象時(shí),一定要為值對(duì)象和關(guān)系對(duì)象賦值,這是必要的,當(dāng)然賦值后,值對(duì)象的值為空,這也是正常的,也是必要的,如果不為它
賦值,那么mongodb是不讓你去update的(c# driver是這樣的)
在對(duì)值對(duì)象賦值時(shí),我們可以按字段賦值,也可以按對(duì)象去賦值,按對(duì)象賦值,它對(duì)將原對(duì)象覆蓋!
var e1 = repository1.Find("556e8f2c2683c8105c9e501f");e1.Name = "wet";e1.Contact.PostCode = "100001";//為字段賦值e1.Contact = new Contact { Email = "bfyxzls@sina.com" };//為實(shí)體賦值,原實(shí)體被覆蓋repository1.Update(e1);更新的結(jié)果,只有Email字段有值,其它字段被覆蓋,這是正常的
MongoDB等待大家去探索,研究...
回到目錄
?
轉(zhuǎn)載于:https://www.cnblogs.com/lori/p/4548934.html
總結(jié)
以上是生活随笔為你收集整理的MongoDB学习笔记~MongoDB实体中的值对象的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 10 结构型模式-----装饰模式
- 下一篇: Java http方式提交短信到短信网关