2012-09-28 5 views
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 형식으로 DB에 저장되어있는 데이터가 POCO에 연재하고 직렬화하기 때문에 나에게 그것이 비효율적 인 것 같다 뷰는 이제이 방법으로 컨트롤러에 의해 생성 된 JSON 데이터를 필요 다시.

임베디드 db에서 json 데이터를 직접 가져 오는 더 직접적인 방법이 있습니까?

답변

7

전혀 비효율적이지 않습니다. 내부적으로 까마귀는 실제로 BSON을 사용하므로 어쨌든 번역을해야합니다. 또한 메타 데이터 필드가 있습니다. 컨트롤러를 통해 직접 반환하려는 경우 데이터 응답을 형성하고 원하지 않는 필드를 제거 할 수있는 기회가 없습니다.

  1. 당신은 그때부터 JSON을 번역 할 수 RavenJObjects을 반환 DocumentStore.DatabaseCommands.Get() 및 관련 작업을 사용할 수 있습니다 : 당신이 생각이 라인을 계속해야하는 경우

    , 당신은 두 가지 옵션이 있습니다 .

  2. raven 클라이언트를 사용하지 않고 HTTP를 통해 Raven 데이터베이스와 직접 대화 할 수 있습니다.

이들 중 어느 것도 간단하지 않으며 Raven Client API의 많은 장점을 버리고 있습니다. IMHO, 달성해야 할 성능 향상은 눈에 띄지 않습니다. 나는 당신의 현재 접근 방식을 고수 할 것입니다.

- 여기에서 일련 번호를 지정하지 않으려는 경우 ContentResult 대신 JsonResult를 반환하는 것이 좋습니다. Json.Net을 (최근 게시물 당) 대신 사용하려면 다음을 수행하십시오. http://james.newtonking.com/archive/2008/10/16/asp-net-mvc-and-json-net.aspx

+0

감사합니다. 매우 도움이되는 응답! – Roberto

관련 문제