从RavenDB获取JSON数据

Rob*_*rto 3 json ravendb asp.net-mvc-3

我有一个Asp.Net MVC3应用程序,它使用嵌入式RavenDB来存储数据.视图需要以这种方式由控制器创建的json数据:

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

一切正常但对我而言似乎效率低下,因为以JSON格式存储在DB中的数据在POCO中序列化,然后再次反序列化.

有没有更直接的方法直接从嵌入式数据库获取json数据?

Mat*_*int 7

它根本不是低效率的.请记住,在内部,乌鸦实际上使用BSON - 因此无论如何你都必须翻译它.还有元数据字段.如果您直接通过控制器返回它,您将没有机会塑造数据的响应并剥离不需要的字段.

如果您必须继续这种思路,您有两种选择:

  1. 您可以使用DocumentStore.DatabaseCommands.Get()和相关操作返回RavenJObjects,然后您可以从中转换JSON.

  2. 您可以通过HTTP直接与Raven数据库通信,而无需使用raven客户端.

这些都不是直截了当的,你丢弃了Raven Client API的很多优点.恕我直言,你要达到的任何性能提升都是不明显的.我会坚持你目前的做法.

另外 - 如果您只是想避免在此处序列化,请考虑返回JsonResult而不是ContentResult.如果你想使用Json.Net(根据你最近的其他帖子),这是一个更简洁的方法:http: //james.newtonking.com/archive/2008/10/16/asp-net-mvc-和JSON-net.aspx