Nosqldb(ravendb)的同步变化以RavenDB为例开始学习NoSQL。我从最简单的模型开始,假设我们有用户创建的主题:publicclassTopic{publicstringId{get;保护集;}公共字符串标题{得到;放;}公共字符串文本{得到;放;}}}publicclassDenormalizedUser{publicstringId{get;放;}公共字符串名称{得到;放;}}publicclassUser{publicstringId{get;保护集;}公共字符串名称{得到;放;}publicDateTime生日{get;放;}//其他一些字段}我们不需要整个User来显示Topic,所以我规范化为DenormalizedUser,包括Id和Name。因此,这里有一些问题:1)这种方法对NoSQL是否正确?2)用户改名如何处理?我是否需要手动更新非规范化类中的所有名称字段?Shaddix您可以使用RavenDBInclude函数从您的主题中使用UserId加载用户。vartopic=_session.Load(topicId).Customize(x=>x.Include(y=>y.UserId));varuser=_session.Load(topic.UserId);LoadforTopic会“预加载”用户,TwoLoads只会生成GET请求。(由于我的名誉,我不能直接回复你对Ayende的回复)。您还可以使用替代方法(可能更简洁).Include()函数代替Customize()。http://docs.ravendb.net/consumer/querying/handling-document-relationships.htmlshaddix,你不需要非规范化,你可以保存对id的引用,然后在从服务器加载时包含1)是的,这个方法工作正常,结果是您只需要在您希望主题文档与用户名一起显示时加载主题文档。但是,正如Ayende所说,性能几乎与您没有对用户进行非规范化并在需要时将其包含在内一样。如果您不担心多服务器部署,我推荐这种方法。2)如果你真的想对用户进行非规范化,那么你可以使用基于集合的操作来更新所有引用该用户的主题。看看这个:http://ravendb.net/faq/denormalized-updates以上是C#学习教程:Howtosynchronizechangesinnosqldb(ravendb)分享所有内容,如果对大家有用需要想了解更多C#学习教程,希望大家多加关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
