RavenDB - 关于如何处理“模式”更改的困惑

时间:2014-02-19 19:21:39

标签: ravendb

我意识到RavenDB不使用实际的模式,并且主要只依赖于传入的对象的形状,但是我很难理解典型的开发人员处理这种情况的方式。形状变化。

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

所以情况是......

class [Name] {

  // properties
  // properties
  public ObjectType PropertyName { get; set; }
}

需要成为......

class [Name] {
 // properties
 // properties
 public List<ObjectType> PropertyName { get; set; }
}

我能够做到这一点的唯一方法是创建一个具有正确类型的新属性,但名称错误 - 并执行并执行将数据复制到其上的冗长乏味的操作,然后保存更改到处。然后,删除旧属性并保存更改,然后创建新的正确属性,并再次完成整个复制过程并保存。与此同时 - 整个网站在此期间都出现了下降。

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

2 个答案:

答案 0 :(得分:3)

Ayende在博客中发表了关于schema upgradeswhen to perform them的信息。

答案 1 :(得分:1)

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

Dynamic fields

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

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