古い文書から新しい文書を作成することをお勧めします。
これは、docStore.UpdateByIndexでパッチを適用することで簡単に行うことができます。
私は古い型名Fooを持ち、それを新しい型名Barに名前を変更したいとします。そして、すべてのIDをFoos/123からBars/123に変更したかったのです。
それはこのようになります:
var patchScript = @"
// Copy all the properties from the old document
var newDoc = {};
for (var prop in this) {
if (prop !== '@metadata') {
newDoc[prop] = this[prop];
}
}
// Create the metadata.
var meta = {};
meta['Raven-Entity-Name'] = newCollection;
meta['Raven-Clr-Type'] = newType;
// Store the new document.
var newId = __document_id.replace(oldCollection, newCollection);
PutDocument(newId, newDoc, meta);
";
var oldCollection = "Foos";
var newCollection = "Bars";
var newType = "KarlCassar.Bar, KarlCassar"; // Where KarlCassar is your assembly name.
var query = new IndexQuery { Query = $"Tag:{oldCollection}" };
var options = new BulkOperationOptions { AllowStale = false };
var patch = new ScriptedPatchRequest
{
Script = patchScript,
Values = new Dictionary<string, object>
{
{ nameof(oldCollection), oldCollection },
{ nameof(newCollection), newCollection },
{ nameof(newType), newType }
}
};
var patchOperation = docStore.DatabaseCommands.UpdateByIndex("Raven/DocumentsByEntityName", query, patch, options);
patchOperation.WaitForCompletion();
は、起動時に一度そのコードを実行し、あなたのアプリケーションは、新しい名前のエンティティで作業することができます。古いエンティティはまだ残っています。これらのエンティティはStudio経由で安全に削除できます。