UniqueConstraintsバンドルを使用するOrganizationという名前のエンティティがあります。UniqueConstraintで自動生成されたIDであるNetNameという名前のプロパティがあります。
これは不要なので、代わりにNetNameプロパティを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")
}
});