Abbiamo un'entità denominata Organizzazione su cui usiamo il UniqueConstraints-bundle. Abbiamo una proprietà denominata NetName che è un UniqueConstraint e un ID generato automaticamente.Cambiare il valore di un Id in RavenDB
Poiché ciò non è necessario, si desidera utilizzare la proprietà NetName come ID. In modo che non abbiamo bisogno di UniqueConstraints per sapere che è unico e anche ottenere il vantaggio di essere in grado di utilizzare Load quando abbiamo il NetName.
avevamo bisogno di ripulire il nostro netname un po 'prima di utilizzarlo come un Id così abbiamo creato un nuovo temporaneo proprietà denominata TempUniqueNetName che detiene ora il valore di:
"organizations/"+ CleanupId(this.NetName)
Così siamo ora pronti per semplicemente sposta quel valore nel nostro ID. Ma non possiamo farlo funzionare. Il nostro problema è che con PatchRequest di seguito ci ritroviamo con una nuova proprietà denominata Id nel database ma l'Id effettivo ha ancora lo stesso valore (vedi screenshot). Esiste un modo migliore (corretto) per modificare il valore di un ID?
L'Entità:
class Organization {
public string Id { get; set; }
[UniqueConstraint]
public string NetName { get; set; }
public string TempUniqueNetName{ get; set; }
}
Vogliamo fare qualcosa di simile:
_documentStore.DatabaseCommands.UpdateByIndex(typeof(Organizations).Name,
new IndexQuery(),
new[]
{
new PatchRequest()
{
Type = PatchCommandType.Rename,
Name = "TempUniqueNetName",
Value = new RavenJValue("Id")
}
});
richiesta Posted qui: http://issues.hibernatingrhinos.com/issue/RavenDB-801 –
Ok, grazie per la risposta. Probabilmente useremo il tuo suggerimento e copierò il documento. È una cosa sola, quindi non importa che ci vorrà un po '. Speriamo che venga implementato la prossima volta che ne abbiamo bisogno :) –
FYI: Gli sviluppatori di RavenDB hanno risposto che non aggiungeranno questa funzione e invece "Può essere implementato dall'utente come una coppia transazionale di eliminazione/inserimento abbastanza facilmente ". –