2011-05-18 67 views
6

我正在評估RavenDB新項目。如何獲得連續的ID與RavenDb默認ID發生器

如果我創建100個實體我得到了長足的連續ID,如:

  • 帖子/ 1
  • 職位/ 2
  • 職位/ 3
  • ...
  • 職位/ 100

但是,如果我建立一個新的DocumentStore實例(應用程序重新啓動後)並嘗試創建n EW實體我有奇怪的IDS是這樣的:

  • 職位/ 1025
  • 職位/ 1026
  • 職位/ 1027

任何幫助嗎?

注:我使用的是嵌入式服務器與ASP.NET MVC 3

+5

如果連續的ID對您有影響,您通常會做錯事。 – 2011-05-18 09:12:19

+0

有時候我覺得這很合理。例如,發票號碼預計是連續的,唯一的和不變的。在某些情況下似乎是合理的身份。或者,您是否總是*使用代理ID,然後通過其他方式手動生成順序發票號碼? – pettys 2015-03-12 15:14:25

回答

3

你可能想看看在RavenDB身份選項,但這不是真正的東西,你應該關心。

7

來自RavenDb文檔,you're after the Identity strategy

RavenDB還支持Identity的概念,例如,如果您需要連續使用 ID。通過在 實體中創建字符串Id屬性,並將其設置爲以斜線(/)結尾的值,可以讓 告知RavenDB將其用作實體的關鍵前綴。在調用SaveChanges()後,前綴 後跟下一個可用的整數ID將爲您實體的ID爲 的ID。

例如,

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

session.Store(foo); 
session.SaveChanges();