在RavenDB中使用URL作爲鍵的最佳方式是什麼?在RavenDB中作爲鍵的URL
不幸的是,更新一個項目的語義在文檔中並不清楚:如果密鑰以反斜槓結尾,它總是一個插入,否則它可能是一個更新,如果該鍵已經存在。
但URLs can end up in slash,而RavenDB uses terminating slashes for key generation
RavenDB還支持身份的概念,例如,如果你需要 的ID是連續的。通過在 實體創建一個字符串ID屬性,並將其設置爲以斜槓(/)結尾的值,可以 告訴RavenDB使用,作爲對你的實體的一個關鍵前綴。在調用SaveChanges()後,前綴 後跟下一個可用的整數ID將爲您實體的ID爲 的ID。 ,並且正斜槓不能重新配置。所以它並不真正「支持」它,而是強制執行它。
編輯:同樣的RavenDB文檔頁面的狀態下面,這不符合所觀察到的行爲:
您可以分配到一個文檔,你可以想像的任何ID。 一切都會正常工作,但是你必須要知道 是某種標識,否則會導致性能問題時,與自定義生成的ID 文件數量非常高(百萬 文件)。
的選項有: 1.修改你的URL刪除結束斜槓 2. URL編碼的URL(由RavenDB維護者的建議) 3.修改架構和使用數據庫生成的ID
選項1在大多數情況下應該是安全的。選項2會使密鑰不可讀,另外我還沒有設法使它工作(可能是RavenDB或我的代碼中的錯誤)。選項3似乎不必要地使模式複雜化。
什麼是最好的行動過程中,有什麼看法?