2013-01-06 31 views
8

Tôi có một tài sản mà tôi không muốn lưu trữ trong RavenDB. Nếu tôi thêm thuộc tính JsonIgnore thì RavenDB sẽ bỏ qua tốt nhưng sau đó WebApi sẽ như vậy. Tôi vẫn muốn WebApi serialize dữ liệu xuống một khách hàng web mặc dù.Làm cách nào để yêu cầu RavenDB bỏ qua một thuộc tính chứ không phải WebAPI?

Làm cách nào để yêu cầu RavenDB bỏ qua một thuộc tính nhưng vẫn có WebApi tuần tự hóa nó?

Trả lời

14

Trong RavenDB 2,0

using Raven.Imports.Newtonsoft.Json 

public class Foo 
{ 
    [JsonIgnore] 
    public string Bar { get; set; } 
} 

Bởi vì nó sử dụng bản sao internalized quạ của json.net - WebAPI sẽ không nhận các thuộc tính.

Trong RavenDB 1.0 hoặc 2,0

Bạn có thể tùy chỉnh serialization json của đối tượng của bạn trực tiếp sử dụng một trình giải quyết hợp đồng json tùy chỉnh.

Wire nó lên để lưu trữ tài liệu của bạn tại thời điểm khởi tạo:

documentStore.Conventions.JsonContractResolver = new CustomContractResolver(true); 
documentStore.Initialize(); 

Bởi vì nó không có cốt thép lên bất cứ nơi nào khác, nó sẽ chỉ ảnh hưởng RavenDB. Tùy chỉnh nó tuy nhiên bạn thích cho phù hợp với nhu cầu của bạn.

+0

[Raven.Imports.Newtonsoft.Json.JsonIgnore] một mình đã thực hiện thủ thuật. Bây giờ tôi có thể kiểm soát các thuộc tính được tuần tự hóa thành RavenDB tách biệt với WebAPI. Nhu cầu/lợi ích của phần hai của câu trả lời này là gì? – kareem

+2

Raven 1.0 vẫn ở ngoài đó. Và nhiều người không thích gây ô nhiễm các thực thể của họ với các thuộc tính. –

+0

Cảm ơn, người giải quyết hợp đồng đã lưu tôi phải thực sự sử dụng kiến ​​trúc phần mềm tốt;) – Jeff

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