2012-05-03 31 views
16

Tôi có một mô hình tài liệu để lưu trữ trong RavenDB nhưng tôi không muốn lưu trữ một thuộc tính được tính toán. Làm thế nào để tôi nói với RavenDB bỏ qua tài sản này?Yêu cầu RavenDB bỏ qua một thuộc tính

Trong ví dụ bên dưới, tôi không muốn lưu trữ 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); }} 
} 

Trả lời

24

Chỉ cần trang trí Duration tài sản với [JsonIgnore] như thế này:

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

Xem thêm ở đây: http://ravendb.net/docs/client-api/advanced/custom-serialization

+1

Side lưu ý: Nếu lớp này là trong dự án -another- (ví dụ AwesomeNamespace.Core.), sau đó dự án khác này cần gói nuget Newtonsoft.Json hoặc RavenDb.Client. Về cơ bản, thuộc tính này là từ thư viện Newtonsoft.Json. Điều này có thể thay đổi trong tương lai, nhưng tại thời điểm tôi viết bình luận này .. đó là điểm số. –

+9

"Với phiên bản 2 của RavenDB bạn cần phải sử dụng các thuộc tính từ không gian tên Raven.Imports.Newtonsoft.Json thay vì không gian tên Newtonsoft.Json. Các tên Newtonsoft.Json sẽ bị bỏ qua." - Lấy từ các ý kiến ​​trên bài viết được liên kết ở trên. – ChadT

+1

RavenDB 3: Sử dụng '[Newtonsoft.Json.JsonIgnore]' thay vì 'Raven.Imports.Newtonsoft.Json' không gian tên. Dường như, họ đã thay đổi nó kể từ khi nhận xét của ChadT @ về v2. –

Các vấn đề liên quan