Frage

Ich versuche, eine bestehende Web-Anwendung Migration RavenDB zu verwenden.

Im Moment habe ich Seiten in meiner Web-Anwendung, die Ihnen erlauben Kategorien, Unterkategorien und Ressourcen basierend auf einer ID in der Abfragezeichenfolgeflag anzuzeigen.

Allerdings merke ich, dass RavenDB erzeugt ids für Aggregat Wurzeln, aber nicht für ein Kind Einheiten.

Ich glaube nicht, Unterkategorie ist ein Aggregat Wurzel (a Kategorie hat Unterkategorien), so dass es mache ein Teildokument meiner Kategorie Dokument.

Bin ich falsch es ein Teildokument zu machen, wie ich es direkt durch seine ID in auf dem Abfragezeichenfolgeflag weitergegeben Zugriff bin? Aber wenn nicht, wie soll ich einzelne Unterkategorien zugreifen, als RavenDB scheint nicht ids für Unternehmen zu generieren, die nicht aggregierten Wurzeln?

War es hilfreich?

Lösung

Es gibt ein lange, aber interessante Diskussion auf der Mailingliste Raven über über diese genaue Situation.

Die kurze Antwort ist, dass Raven ist das nicht entworfen, um zu tun, nur Stammentitäten eine ID erhalten, alles andere als ein Wert Typ behandelt. Aber man kann es selbst implementieren, das Codebeispiel am Ende des Gewindes für Informationen sehen.

Andere Tipps

Ich lief in dieses Problem, aber war nicht zufrieden mit den Dokumenten lassen erzeugt die ID ist, da ich nicht das Gefühl, es war Thread-sicher, vor allem für Web-basierte Umgebungen.

Schließlich entschied ich den Server zu lassen, für mich, die Ids erzeugt unter Verwendung einer der GenerateDocumentKey Methode wie folgt:

using (var session = Store.OpenSession())
{
    if(category.SubCategories != null)
    {
       var newSubCategories = data.BankAccounts.Where(x => string.IsNullOrEmpty(x.Id));
        foreach (var sc in newSubCategories)
            sc.Id = session.Advanced.Conventions.GenerateDocumentKey(sc);    
    }

    session.Store(data);
    session.SaveChanges();
}

So kann ich die Datenbank bin so dass das Kind-IDs erzeugen und sicherstellen können, dass ich gerecht zu werden nicht für Rennbedingungen usw. in der aktuellen Klasse haben selbst.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top