2012-05-03 18 views
16

Mam model dokumentu do przechowywania w RavenDB, ale nie chcę przechowywać obliczonej właściwości. Jak mogę powiedzieć RavenDB, aby zignorował tę właściwość? W poniższym przykładzie nie chcę przechowywać Duration.Powiedz RavenDB, aby zignorować właściwość

public class Build 
{ 
    public string Id { get; set; } 
    public string Name { get; set; } 
    public DateTime StartedAt { get; set; } 
    public DateTime FinishedAt { get; set; } 

    public TimeSpan Duration { get { return StartedAt.Subtract(FinishedAt); }} 
} 

Odpowiedz

24

Wystarczy ozdobić właściwość Duration z [JsonIgnore] tak:

public class Build 
{ 
    public string Id { get; set; } 
    public string Name { get; set; } 
    public DateTime StartedAt { get; set; } 
    public DateTime FinishedAt { get; set; } 

    [Raven.Imports.Newtonsoft.Json.JsonIgnore] 
    public TimeSpan Duration { get { return StartedAt.Subtract(FinishedAt); }} 
} 

Zobacz więcej tutaj: http://ravendb.net/docs/client-api/advanced/custom-serialization

+1

marginesie: Jeśli ta klasa jest w -another- projektu (np AwesomeNamespace.Core.), następnie ten drugi projekt musi albo nugetować pakiet Newtonsoft.Json albo RavenDb.Client. Zasadniczo ten atrybut pochodzi z biblioteki Newtonsoft.Json. To może się zmienić w przyszłości, ale w momencie, gdy piszę ten komentarz .. to jest wynik. –

+9

"W wersji 2 RavenDB należy używać atrybutów z przestrzeni nazw Raven.Imports.Newtonsoft.Json zamiast przestrzeni nazw Newtonsoft.Json.Nazwa nazw Newton.Json należy zignorować." - Zaczerpnięte z komentarzy do powyższego powiązanego stanowiska. – ChadT

+1

RavenDB 3: Użyj przestrzeni nazw "[Newtonsoft.Json.JsonIgnore]" zamiast "Raven.Imports.Newtonsoft.Json". Wygląda na to, że zmienili go, ponieważ komentarz @ ChadT skomentował v2. –

Powiązane problemy