2012-05-03 19 views
16

Ho un modello di documento da memorizzare in RavenDB ma non voglio memorizzare una proprietà calcolata. Come posso dire a RavenDB di ignorare questa proprietà?Dire a RavenDB di ignorare una proprietà

Nell'esempio seguente non voglio memorizzare Duration.

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); }} 
} 

risposta

24

Basta decorare la proprietà Duration con [JsonIgnore] come questo:

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); }} 
} 

Vedere più qui: http://ravendb.net/docs/client-api/advanced/custom-serialization

+1

Nota a margine: se questa classe è in progetto -another- (ad es AwesomeNamespace.Core.), quindi questo altro progetto deve o nuget pacchetto Newtonsoft.Json o RavenDb.Client. Fondamentalmente, questo attributo proviene dalla libreria Newtonsoft.Json. Questo potrebbe cambiare in futuro, ma al momento in cui scrivo questo commento .. questo è il punteggio. –

+9

"Con la versione 2 di RavenDB è necessario utilizzare gli attributi dallo spazio dei nomi Raven.Imports.Newtonsoft.Json invece dello spazio dei nomi Newtonsoft.Json. Il namespace Newtonsoft.Json può essere ignorato." - Tratto dai commenti sul post collegato sopra. – ChadT

+1

RavenDB 3: utilizzare '[Newtonsoft.Json.JsonIgnore]' piuttosto che il dominio 'Raven.Imports.Newtonsoft.Json'. Sembra che lo abbiano cambiato da quando @ ChadT ha commentato la v2. –

Problemi correlati