2014-11-19 1 views
2

다음 코드는 session.Load<Employee>(order.Employee)에서 예외를 throw하지만 직원을 직접 쿼리해도 문제가 없습니다.RavenDB 관련 데이터로드가 작동하지 않습니다.

static void LoadRelatedData() 
    { 
     using (var session = mystore.OpenSession()) 
     { 
      var employeeFromQuery = session.Query<Employee>().FirstOrDefault(); //works 
      var order = session.Include<Order>(o => o.Employee).Load("orders/819"); //works 
      var employeeRelatedToOrder = session.Load<Employee>(order.Employee); //EXCEPTION 
      var dynamicRelatedToOrder = session.Load<dynamic>(order.Employee); //works 
     } 
    } 

    private static IDocumentStore mystore = new DocumentStore() 
    { 
     Url = "http://localhost:4444/RavenDB", 
     DefaultDatabase = "Hello" 
    }.Initialize(); 

내가 얻을 수는 예외입니다 -

An unhandled exception of type 'System.InvalidCastException' occurred in Raven.Client.Lightweight.dll 

Additional information: Unable to cast object of type 'Raven.Abstractions.Linq.DynamicJsonObject' to type 'RavenApp.Employee' 

.

나는 직원 및 주문 데이터가 샘플 데이터 작업을 만들기 까마귀에 의해 생성되는 http://ravendb.net/docs/article-page/2.5/Csharp/client-api/querying/handling-document-relationships

에 내 코드를 내놓고있어.

+0

빌드 3528에서는이 문제가 없습니다. 너 뭐하고있어? – kamranicus

+0

아래 답변을 통해 성공을 얻었습니까? 그렇지 않은 경우 질문을 업데이트하여 자세한 정보를 제공 할 수 있습니까> –

답변

0

포함을 사용 했으므로 order.Employee를 채워야하며 두 번째로로드 할 필요가 없습니다.

static void LoadRelatedData() 
{ 
    using (var session = mystore.OpenSession()) 
    { 
     var employeeFromQuery = session.Query<Employee>().FirstOrDefault(); 
     var order = session.Include<Order>(o => o.Employee).Load("orders/819"); 

     // Access them directly, as they have been resolved 
     var employeeRelatedToOrder = order.Employee; 
     var dynamicRelatedToOrder = (dynamic)order.Employee; 
    } 
} 
관련 문제