2012-12-20 1 views
2

J'apprends RavenDB et je me familiarise avec la façon dont les choses fonctionnent. Une chose que je ne comprends pas est de savoir comment sauvegarder l'identifiant que le corbeau crée pour une propriété.comment configurer un uniqueid dans ravendb

public class User 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string ID { get; set; } //This will be null when I save object to DB I want it to be same as generated 
} 

[TestMethod] 
public void TestSaving() 
{ 
    using (var session = documentStore.OpenSession()) 
    { 
     var user = new User { FirstName = "John", LastName = "Doe" }; 
     session.Store(user); 
     session.SaveChanges(); //I want that property to save that id that raven created: Users/65 
    } 
} 

Répondre

6

Je pense que la convention par défaut dans Raven pour trouver la propriété d'identité est « Id » et est sensible à la casse. Essayez de renommer votre propriété en ID, plutôt qu'en ID.

1

Regardez à nouveau. Immédiatement après avoir appelé session.Store(user), vous constaterez que la propriété ID est déjà définie pour vous. Même avant SaveChanges() est appelé.

Mise à jour

Désolé, je ne l'ai pas remarqué le boîtier de votre propriété. La convention par défaut de Raven est de rechercher une propriété appelée "Id" - qui est sensible à la casse. Si vous voulez une autre convention, vous pouvez modifier les paramètres par défaut du corbeau:

documentStore.Conventions.FindIdentityProperty = x => x.Name == "ID"; 

Vous pouvez en savoir plus sur les conventions par défaut here

+0

Alors Pourquoi la propriété réelle est-elle définie sur null dans le document? – user516883

Questions connexes