我们有一个名为 Organization 的实体,我们在其上使用 UniqueConstraints-bundle。我们有一个名为 NetName 的属性,它是一个 UniqueConstraint 和一个自动生成的 Id。
由于这是不必要的,我们希望使用 NetName-property 作为 Id。这样我们就不需要 UniqueConstraints 来知道它是唯一的,并且在我们拥有 NetName 时也可以从能够使用 Load 中受益。
在将网络名用作 Id 之前,我们需要稍微清理一下网络名,因此我们创建了一个名为 TempUniqueNetName 的新临时属性,该属性现在包含以下值:
"organizations/"+ CleanupId(this.NetName)
所以我们现在准备简单地将该值移动到我们的 Id 中。但我们无法让它工作。我们的问题是,使用下面的 PatchRequest,我们最终在数据库中得到了一个名为 Id 的新属性,但实际的 Id 仍然具有相同的值(见屏幕截图)。是否有更好(正确)的方法来更改 Id 的值?
实体:
class Organization {
public string Id { get; set; }
[UniqueConstraint]
public string NetName { get; set; }
public string TempUniqueNetName{ get; set; }
}
我们想做这样的事情:
_documentStore.DatabaseCommands.UpdateByIndex(typeof(Organizations).Name,
new IndexQuery(),
new[]
{
new PatchRequest()
{
Type = PatchCommandType.Rename,
Name = "TempUniqueNetName",
Value = new RavenJValue("Id")
}
});