2012-09-28 194 views
3

我有一個使用嵌入式RavenDB存儲數據的Asp.Net MVC3應用程序。 的觀點需要的是現在由控制器以這種方式創建JSON數據:從RavenDB獲取JSON數據

public ContentResult Data() 
    { 
     var res = JsonConvert.SerializeObject(DocumentSession.Query<DataObject>()); 
     return new ContentResult { Content = res, ContentType = "application/json" }; 
    } 

一切工作正常,但對我來說,因爲存儲在數據庫中的JSON格式的數據在POCO序列化,然後反序列化似乎效率不高再次。

有沒有更直接的方式來從嵌入式數據庫直接獲取json數據?

回答

7

它根本沒有低效率。請記住,在內部,烏鴉實際上使用BSON--因此無論如何您都必須翻譯它。還有元數據字段。如果你直接通過你的控制器返回它,你將沒有機會調整數據的響應並去掉不需要的字段。

如果你必須用這種思路繼續下去,你有兩個選擇:

  1. 您可以使用DocumentStore.DatabaseCommands.Get()及相關操作返回RavenJObjects,你可以再由翻譯JSON 。

  2. 您可以通過HTTP直接與Raven數據庫通話,而無需使用烏鴉客戶端。

這些都不是直截了當,並且你正在拋棄Raven Client API的許多優點。恕我直言,你要達到的任何性能收益都不會令人難以察覺。我會堅持你目前的做法。

另外 - 如果你只是想避免在這裏序列化,考慮返回一個JsonResult而不是一個ContentResult。如果你想使用Json.Net(根據你最近的其他帖子),下面是一個更清晰的方法:http://james.newtonking.com/archive/2008/10/16/asp-net-mvc-and-json-net.aspx

+0

謝謝你。非常有用的迴應! – Roberto