RavenDB (ビルド #888) にエンティティを格納しています。新しいバージョンのアプリケーションに接続されているデータベースの移行のために、ID を変更する必要があります。
私が使用しているサンプル関数を書きました:
public bool Migrate()
{
using (var session = _store.OpenSession())
{
var users = session.Query<User>().ToList();
foreach (var user in users)
{
user.Id = user.Email;
}
session.SaveChanges();
}
}
このコードを実行すると、例外が発生します。
Status: System.InvalidOperationException: Entity App.Models.Entities.User had document key 'mydomain-mylogin' but now has document key property 'mylogin@yahoo.com'.
You cannot change the document key property of a entity loaded into the session
at Raven.Client.Document.InMemoryDocumentSessionOperations.CreatePutEntityCommand(Object entity, DocumentMetadata documentMetadata)
at Raven.Client.Document.InMemoryDocumentSessionOperations.PrepareForEntitiesPuts(SaveChangesData result)
at Raven.Client.Document.InMemoryDocumentSessionOperations.PrepareForSaveChanges()
at Raven.Client.Document.DocumentSession.SaveChanges()
どうすればできますか?