6

新しいプロジェクトのために RavenDB を評価しています。

100 個のエンティティを作成すると、次のような素晴らしい連続 ID が得られます。

  • 投稿/1
  • 投稿/2
  • 投稿/3
  • ...
  • 投稿数/100

しかし、(アプリの再起動後に) 新しい DocumentStore インスタンスを作成し、新しいエンティティを作成しようとすると、次のような奇妙な ID が得られます。

  • 投稿/1025
  • 投稿/1026
  • 投稿数/1027

助けはありますか?

注:ASP.NET MVC 3で組み込みサーバーを使用しています

4

4 に答える 4

8

これは仕様によるものです。DocumentStore インスタンスを作成するたびに新しい HiLo キーが生成されるため、表示されているギャップは他のセッションからの未使用の ID です。

なぜ連続したIDを気にするのですか?

この件については、こちらも参考になるかもしれません: http://groups.google.com/group/ravendb/browse_thread/thread/3dbcacbc8b366ff8/

于 2011-05-18T09:09:04.220 に答える
7

RavenDb ドキュメントから、あなたは Identity 戦略を追求しています。

RavenDB は、ID を連続させる必要がある場合などに、ID の概念もサポートします。エンティティに文字列 Id プロパティを作成し、それをスラッシュ (/) で終わる値に設定することで、エンティティのキ​​ー パーフィックスとしてそれを使用するように RavenDB に指示できます。SaveChanges() を呼び出した後、その接頭辞の後に次に利用可能な整数 ID がエンティティの ID になります。

例えば。

var foo = new Foo();
foo.Id = "foo/"; // <-- this will use the Identity strategy, not HiLo.

session.Store(foo);
session.SaveChanges();
于 2012-05-25T05:32:24.537 に答える
3

RavenDB の ID オプションを見たいと思うかもしれませんが、それは実際には気にする必要はありません。

于 2011-05-18T13:36:31.977 に答える