我們有一個名爲Organization的實體,我們使用UniqueConstraints-bundle。我們有一個名爲NetName的屬性,它是一個UniqueConstraint和一個自動生成的Id。在RavenDB中更改Id的值
由於這是不必要的,我們希望使用NetName屬性作爲Id。所以我們不需要UniqueConstraints來知道它是唯一的,並且在我們擁有NetName的時候也能夠使用Load來獲得好處。
我們需要用它作爲id之前清理我們的網絡名了一點,所以我們創建了一個新的臨時屬性稱爲TempUniqueNetName,現在持有的價值:
"organizations/"+ CleanupId(this.NetName)
所以我們現在就可以簡單地將該值移至我們的ID。但我們無法實現它的工作。我們的問題是,在下面的PatchRequest中,我們最終得到了一個名爲Id的新屬性,但acctual Id仍然具有相同的值(請參見截圖)。是否有更好的(正確的)方法來更改Id的值?
實體:
class Organization {
public string Id { get; set; }
[UniqueConstraint]
public string NetName { get; set; }
public string TempUniqueNetName{ get; set; }
}
我們想要做這樣的事情:
_documentStore.DatabaseCommands.UpdateByIndex(typeof(Organizations).Name,
new IndexQuery(),
new[]
{
new PatchRequest()
{
Type = PatchCommandType.Rename,
Name = "TempUniqueNetName",
Value = new RavenJValue("Id")
}
});
發佈要求:http://issues.hibernatingrhinos.com/issue/RavenDB-801 –
好的,謝謝你的回答。我們可能會使用您的建議並複製文檔。這是一次性的事情,所以我無所謂,它需要一段時間。希望下次我們需要這個時候它會被執行:) –
僅供參考:RavenDB開發者迴應說他們不會添加這個功能,而是「它可以被用戶實現爲事務性的一對刪除/放置「。 –