2013-11-24 3 views
0

Я могу получить ту же самую работу запроса в браузере Neo4J, но Neo4JClient не возвращает данных.Почему доза Neo4jClient не возвращает данные, но окно Cypher делает

Это ошибка в Neo4JClient?

вот мой C# код в Neo4JClient

  //Define Load warehouse relationship 
      string createQry = "(user)<-[:PUBLISHED_BY]-(load:Shipment {shipmentData})<-[:HAS_PUBLISHED]-(shipper),(addr)<-[:HAS_ADDRESS {Type: 'PICKUP'}]-(load)-[:SHIPPED_FROM]->(whse), " + 
       //Define the dates on the load 
       "(publishDay)<-[:PUBLISHED_ON]-(load)-[:HAS_PICKUP_DATE]->(pickup), (load)-[:HAS_DELIVER_BY_DATE]->(deliverBy), " + 
       //Define various constraints on the load 
       "(vehCat)<-[:DEFINES]-(const:Constraint {constraintData})<-[:HAS_CONSTRAINT]-(load)-[:HAS_PRODUCT_TYPE]->(prodType)"; 

      var qry = GraphClient.Cypher 
       .Match("(user:Person)<-[:HAS_EMPLOYEE]-(wf)<-[:HAS_WORKFORCE]-(shipper:Shipper),(shipper)-[:HAS_WAREHOUSE]->(whse:Warehouse)-[:HAS_ADDRESS]-(addr), (vehCat:VehicleCategory), (prodType:ProductType) ") 
       .Where("user.InternalId ={userId}") 
       .AndWhere("whse.InternalId = {pickupWhseId}") 
       .AndWhere("vehCat.InternalId = {categoryId}") 
       .AndWhere("prodType.InternalId IN [{shippedProducts}]") 
       .WithParams(new { 
        userId = currentUserId, 
        pickupWhseId = shipment.ShippedFrom.InternalId, 
        categoryId = shipment.VehicleCategory.InternalId, 
        shippedProducts = prodInClause 
       }) 
       .With("user, shipper, whse, addr, vehCat, prodType") 
       .Start(new { publish = publishDay, pickup = pickupDay, deliverBy = deliverByDay }) 
       .CreateUnique(createQry) 
       .WithParams(
       new { 
        shipmentData = loadData, 
        constraintData = constraint 
       }) 
       .Return((load, shipper)=> new 
        { 
         load = load.Node<model.Publishing.Shipment>(), 
         shipper = shipper.Node<model.Publishing.Shipper>() 
        }); 

      var qryResult = qry.Results.Single(); //THROWS ERROR!! 
      var shipmentNode = qryResult.load; 
      var shipperNode = qryResult.shipper; 

, что приводит к следующему шифровальщика запроса в соответствии с Neo4JClient-х qry.Query.QueryText

MATCH (user:Person)<-[:HAS_EMPLOYEE]-(wf)<-[:HAS_WORKFORCE]-(shipper:Shipper),(shipper)-[:HAS_WAREHOUSE]->(whse:Warehouse)-[:HAS_ADDRESS]-(addr), (vehCat:VehicleCategory), (prodType:ProductType) 
WHERE user.InternalId ={userId} 
AND whse.InternalId = {pickupWhseId} 
AND vehCat.InternalId = {categoryId} 
AND prodType.InternalId IN [{shippedProducts}] 
WITH user, shipper, whse, addr, vehCat, prodType 
START publish=node({p4}), pickup=node({p5}), deliverBy=node({p6}) 
CREATE UNIQUE (user)<-[:PUBLISHED_BY]-(load:Shipment {shipmentData})<-[:HAS_PUBLISHED]-(shipper),(addr)<-[:HAS_ADDRESS {Type: 'PICKUP'}]-(load)-[:SHIPPED_FROM]->(whse), (publishDay)<-[:PUBLISHED_ON]-(load)-[:HAS_PICKUP_DATE]->(pickup), (load)-[:HAS_DELIVER_BY_DATE]->(deliverBy), (vehCat)<-[:DEFINES]-(const:Constraint{constraintData})<-[:HAS_CONSTRAINT]-(load)-[:HAS_PRODUCT_TYPE]->(prodType) 
RETURN load AS load, shipper AS shipper 

но когда выполняется следующий код «qry.Results.Single();» Я получаю исключение, поскольку результаты не возвращаются. Я скопировал тот же запрос в окно запроса Neo4J и скорректировал параметры и вернул данные на этом экране, как показано ниже.

Запрос:

MATCH (user:Person)<-[:HAS_EMPLOYEE]-(wf)<-[:HAS_WORKFORCE]-(shipper:Shipper),(shipper)-[:HAS_WAREHOUSE]->(whse:Warehouse)-[:HAS_ADDRESS]-(addr), (vehCat:VehicleCategory), (prodType:ProductType)  
WHERE user.InternalId =2 AND whse.InternalId = 999991 AND vehCat.InternalId = 101 AND prodType.InternalId IN [6,7] 
WITH user, shipper, whse, addr, vehCat, prodType 
START publish=node(605), pickup=node(606), deliverBy=node(608) 
CREATE UNIQUE (user)<-[:PUBLISHED_BY]-(load:Shipment { DeliveryByDate:'12/3/2013 6:30:00 PM +00:00', PickupDate: '11/26/2013 6:30:00 PM +00:00', TotalVehiclesNeeded:'3', TotalWeightShipped:'45' })<-[:HAS_PUBLISHED]-(shipper),(addr)<-[:HAS_ADDRESS {Type: 'PICKUP'}]-(load)-[:SHIPPED_FROM]->(whse), (publishDay)<-[:PUBLISHED_ON]-(load)-[:HAS_PICKUP_DATE]->(pickup), (load)-[:HAS_DELIVER_BY_DATE]->(deliverBy), (vehCat)<-[:DEFINES]-(const:Constraint { ConstraintType:'LoadingConstraint', IsHardConstraint:'false'})<-[:HAS_CONSTRAINT]-(load)-[:HAS_PRODUCT_TYPE]->(prodType) 
RETURN load AS load, shipper AS shipper 

enter image description here

есть ли способ, чтобы включить ведение журнала, чтобы увидеть, что происходит в Neo4jCLient?

ответ

1

Обнаружена проблема, благодаря скрипачу. Проблема была в том, что я использовал пункт IN

.AndWhere("prodType.InternalId IN [{shippedProducts}]") 

было добавлено [], что заставило запрос вернуть нулевые строки.

Смежные вопросы