2012-05-03 4 views
16

У меня есть модель документа для хранения в RavenDB, но я не хочу хранить вычисленное свойство. Как сообщить RavenDB игнорировать это свойство?Скажите RavenDB, чтобы игнорировать свойство

В приведенном ниже примере я не хочу хранить 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); }} 
} 

ответ

24

Просто украсить Duration недвижимость с [JsonIgnore], как это:

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

Подробнее здесь: http://ravendb.net/docs/client-api/advanced/custom-serialization

+1

Side Примечание: Если этот класс находится в -another- проекта (например, AwesomeNamespace.Core.), то этот другой проект должен либо выполнить nuget пакет Newtonsoft.Json, либо RavenDb.Client. В принципе, этот атрибут из библиотеки Newtonsoft.Json. Это может измениться в будущем, но в то время, когда я пишу этот комментарий ... это оценка. –

+9

«С версией 2 RavenDB вам нужно использовать атрибуты из пространства имен Raven.Imports.Newtonsoft.Json вместо пространства имен Newtonsoft.Json. Пространство имен Newtonsoft.Json будет проигнорировано». - Взято из комментариев по вышеуказанному сообщению. – ChadT

+1

RavenDB 3: Используйте '[Newtonsoft.Json.JsonIgnore]', а не пространство имен Raven.Imports.Newtonsoft.Json'. Похоже, они изменили его с тех пор, как @ ChadT прокомментировал v2. –

Смежные вопросы