2012-01-07 13 views
5

Mam bieżący obiekt, który ma właściwość publiczną o nazwie Id. Kiedy przechowuję obiekt, chciałbym, aby Id był częścią Danych i nie stał się dokumentem Id, takim jak obecnie. Podczas tworzenia magazynu dokumentów ustawiam tylko ciąg połączenia.Raven DB - Automatyczne generowanie własnego klucza

using (var session = documentStore.OpenSession()) 
{ 
    session.Store(a); 
    session.SaveChanges(); 
} 


a can be thought of an object as: 
public class A 
{ 
    public Guid Id { get; set; } 
    //other properties 
} 

Więc albo chcę, aby wygenerować losowy identyfikator lub mają zarówno dane, jak i documentId stanowiącej własność Id klasy A.

EDIT:

zatem dwie możliwości: 1. dokument id = Id i

Data Section contains: 
{ 
    data //sorry if the notation is not correct, doing it off of memory 
    { 
     Id: [my guid] 
     //other properities 
    } 
} 

lub dane zawierające identyfikator i dokument id = losowo generowane przez kruka

+1

ja nie rozumiem, co próbujesz zrobić tutaj. Jak powinien wyglądać identyfikator? Jak powinien wyglądać dokument? –

+0

Zobacz Edytuj, aby uzyskać zaktualizowane informacje. –

Odpowiedz

8

Można to wykorzystać, jeśli chcesz Id być nieruchomość, którą można sterować na własną rękę i nie raven użyć innego mienia jako identyfikator dokumentów Zamiast:

public class User 
{ 
    public string DocumentId { get; set; } 
    public Guid Id { get; set; } 
    public string Name { get; set; } 

    public User() 
    { 
     Id = Guid.NewGuid(); 
    } 
} 

documentStore.Conventions.FindIdentityProperty = prop => 
{ 
    if (prop.DeclaringType == typeof(User)) 
     return prop.Name == "DocumentId"; 

    return prop.Name == "Id"; 
}; 
+0

Czy ta metoda zapisze również właściwość Nazwa w sekcji Dane dokumentu? –

+0

Pewnie, że tak. Brad, bardzo łatwo jest wypróbować takie rzeczy, jeśli masz nuget. –

+0

Awesome dostałem szansę, aby spróbować i działa idealnie –

Powiązane problemy