我意识到RavenDB不使用实际的模式,并且主要只依赖于传入的对象的形状,但是我很难理解典型的开发人员处理这种情况的方式。形状变化。
例如,我最近遇到一个问题,我们有一个名为one thing的字段,它是一个值 - 客户希望它更改为集合。
所以情况是......
class [Name] {
// properties
// properties
public ObjectType PropertyName { get; set; }
}
需要成为......
class [Name] {
// properties
// properties
public List<ObjectType> PropertyName { get; set; }
}
我能够做到这一点的唯一方法是创建一个具有正确类型的新属性,但名称错误 - 并执行并执行将数据复制到其上的冗长乏味的操作,然后保存更改到处。然后,删除旧属性并保存更改,然后创建新的正确属性,并再次完成整个复制过程并保存。与此同时 - 整个网站在此期间都出现了下降。
有没有更聪明的方法来处理这种情况?我看过“补丁”,但除了非常基本的变化外,它似乎太有限了。
答案 0 :(得分:3)
Ayende在博客中发表了关于schema upgrades和when to perform them的信息。
答案 1 :(得分:1)
我知道一个链接不鼓励作为答案,但它是(部分)问题的直接答案
这实际上不允许重命名字段或更改类型(从单个集合到集合)。
我认为这里的一个陷阱是,如果返回零,您可能不知道字段名称是否匹配或值是否不匹配。