2012-05-03 14 views
16

Tengo un modelo de documento para almacenar en RavenDB pero no quiero almacenar una propiedad calculada. ¿Cómo le digo a RavenDB que ignore esta propiedad?Indique a RavenDB que ignore una propiedad

En el siguiente ejemplo, no quiero almacenar 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); }} 
} 

Respuesta

24

Sólo decorar la propiedad Duration con [JsonIgnore] así:

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

Ver más aquí: http://ravendb.net/docs/client-api/advanced/custom-serialization

+1

Nota al margen: Si esta clase está en proyecto -another- (por ejemplo AwesomeNamespace.Core.), entonces este otro proyecto necesita nuget paquete Newtonsoft.Json o RavenDb.Client. Básicamente, este atributo es de la biblioteca Newtonsoft.Json. Esto podría cambiar en el futuro, pero en el momento de escribir este comentario ... ese es el puntaje. –

+9

"Con la versión 2 de RavenDB, debe usar los atributos del espacio de nombre Raven.Imports.Newtonsoft.Json en lugar del espacio de nombres Newtonsoft.Json. El espacio de nombres Newtonsoft.Json se ignorará". - Tomado de los comentarios en la publicación vinculada anterior. – ChadT

+1

RavenDB 3: Use '[Newtonsoft.Json.JsonIgnore]' en lugar del espacio de nombres 'Raven.Imports.Newtonsoft.Json'. Parece que lo han cambiado desde @ ChadT ha comentado en v2. –

Cuestiones relacionadas