0

評価用にRavenDBを設定しました。いくつかのドキュメントをその中にプッシュするコードを書きました。次に、それらのドキュメントをレンダリングするWebサイトがあります。

私は一日中、Raven Studioを使用してこれらのドキュメントの一部のテキストを変更し、自分のWebサイトで変更が行われるのを確認しました。

問題:夜帰宅した後、翌日にデータベースが変更されたようです。ドキュメントが「変更前」のバージョンに戻っています...何が起こっているのでしょうか。Ravenコンソールの出力を確認しましたが、開発者のマシンで一晩中更新コマンドが発行されませんでした(また、そうなるとは思いませんでした!!)

注:これは私の開発マシンで実行されているだけです。

4

3 に答える 3

1

私の同僚は、更新が元に戻されるという非常に問題を抱えていました。私たちが行った更新は、すべてのドキュメントにプロパティを追加し、次にこのプロパティのドキュメント固有の値を追加することでした。SaveConfiguration()を呼び出し、RavenStudioで変更が行われていることを確認しました。しばらくして、いくつかの文書はそれの新しい財産を失いました。

ロギングをオンにすることにしたので、NLog.configファイルを追加し、ロギングを開始するためにweb.configに触れました。もちろん、これによりアプリケーションが再起動され、「出来上がり」、更新がRavenStudioに再び表示されました。

しばらくするとレイヴンスタジオから姿を消したので、これはスタジオの問題だと思いました。そのため、テストコントローラーのデータベースからオブジェクトを取得しようとしましたが、残念ながら、ここでもオブジェクトにプロパティ値がないため、スタジオの問題だけではありませんでした。

ロギングをオンにして、特定のタイプのドキュメントを再度更新し、ログとスタジオに従って、実際にドキュメントを更新しました。その後間もなく、追加されたプロパティを失うことでドキュメントが元に戻りました(私の同僚はこの時点で泣き始めました-実話)。

後で、これはすべて、ライブWebアプリケーションに古いバージョンのオブジェクトが残っているためであることに気付きました。Webアプリケーションで読み取られたとき、データは追加のプロパティなしで返されました。このため、DocumentSessionはオブジェクトが(公平に)変更されたと考えたようです。したがって、SaveChangesを呼び出すと、これらのオブジェクトでさえ、追加のプロパティなしでデータベースに書き込まれました。

私の結論は正しいですか?この問題の解決策は何ですか?私はCQRSを考えています。そうすると、読み取りのためにDocumentSessionで「SaveChanges()」を呼び出すことは決してないからです。

于 2012-09-06T16:58:01.120 に答える
1

私の知る限り、RavenDB には、コミットされた書き込み操作を自動的に元に戻すコードは含まれていません。正直なところ、これは本当に恐ろしいことです。全体として、これは非常に奇妙に聞こえますが、それが実際に発生する可能性があるシナリオは考えられません。これが再び発生した場合は、ログファイルを ravendb サポートに送信することをお勧めします。これは非常に深刻な問題になるからです。

于 2012-05-02T22:35:04.183 に答える
0

Adam、念のため、変更を加えた後に SaveChanges() を呼び出しましたか?

RavenDB には、この動作を引き起こすものはまったくありません。

于 2012-05-03T09:17:44.913 に答える