RavenDB-关于如何处理的困惑;“模式”;变化

RavenDB-关于如何处理的困惑;“模式”;变化,ravendb,Ravendb,我意识到RavenDB并不使用实际的模式,它主要依赖于传入的对象的形状,但我很难理解典型的开发人员在形状发生变化的情况下如何处理这个问题 例如,我最近遇到了一个问题,我们有一个名为one thing的字段,它是一个值,客户机希望将其更改为集合 所以情况是 class [Name] { // properties // properties public ObjectType PropertyName { get; set; } } 需要成为 class [Name] { //

我意识到RavenDB并不使用实际的模式,它主要依赖于传入的对象的形状,但我很难理解典型的开发人员在形状发生变化的情况下如何处理这个问题

例如,我最近遇到了一个问题,我们有一个名为one thing的字段,它是一个值,客户机希望将其更改为集合

所以情况是

class [Name] {

  // properties
  // properties
  public ObjectType PropertyName { get; set; }
}
需要成为

class [Name] {
 // properties
 // properties
 public List<ObjectType> PropertyName { get; set; }
}
class[名称]{
//性质
//性质
公共列表属性名称{get;set;}
}
我能做到这一点的唯一方法是创建一个类型正确但名称错误的新属性,然后遍历并执行一个冗长乏味的操作,将数据全部复制到它,然后将更改保存到所有位置。然后,删除旧属性并保存更改,然后创建新的正确属性,再次执行整个复制过程并保存它。与此同时,整个网站在此期间关闭


有没有更聪明的方法来处理这种情况?我已经看过“修补”,但它似乎太有限了,除了非常基本的更改。

我知道不鼓励使用链接作为答案,但它是对问题(部分)的直接回答

这实际上不允许重命名字段或更改类型(从单个更改为集合)


我认为这里的一个陷阱是,如果返回零,您可能不知道字段名是否不匹配或值是否不匹配

我知道不鼓励使用链接作为答案,但它是对问题(部分)的直接回答

这实际上不允许重命名字段或更改类型(从单个更改为集合)

我认为这里的一个陷阱是,如果返回零,您可能不知道字段名是否不匹配或值是否不匹配

Ayende写了关于和的博客。

Ayende写了关于和的博客