2013-03-14 45 views
1

假設我有一個實體的結構,我試圖使用客戶端API保存在RavenDB v2.0文檔存儲中。如何自動分配保存實體的ID?

public class Instance 
    { 
     public string ID { get; set; } 
     public string Name { get; set; } 
     public string Content { get; set; } 
    } 

如果我創建10-20個實例,並且我想分別爲每個實體保存實體ID。我可以在網站的文檔中看到,在調用session.SaveChanges()方法後,您可以檢索實體的ID,但這意味着我需要爲每個實體項目調用此方法。

這裏使用的最佳實踐是什麼?有沒有什麼方法可以讓客戶端API自動將實體ID保存在實體類的字段中(是否有這樣的屬性)?

+0

只是爲了澄清Fitzchack的答案 - 將您的財產更改爲'Id'而不是'ID',並在'Store'後填充。您不必等到'SaveChanges'。 – 2013-03-14 16:14:46

+0

我做了......我創建了一個名爲'Id'的公共''字符串'屬性'{get; set;}'但'Store'後它仍然是'null'。 – Adrian 2013-03-15 08:24:24

+0

除非你想自己設置,否則應該填充。如果需要,請發佈樣本。 – 2013-03-15 12:38:07

回答

2

使用默認約定RavenDB在調用session.Store(item)後使用HiLo算法設置ID值,以便在客戶端生成ID而不必爲每個ID分配而到達服務器。該ID可在名爲「Id」的屬性上使用,您可以將其配置爲查找屬性名爲property。