从RavenDB获取JSON数据

时间:2012-09-28 10:23:07

标签: json asp.net-mvc-3 ravendb

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

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

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

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

1 个答案:

答案 0 :(得分:7)

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

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

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

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

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

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