2017-04-20 6 views
0

私は2日間これを戦ってきましたが、紛失しています。私はノード関係を作成しようとしており、重大な失敗に終わっています。リレーションシップの作成

ここに、関係を作成して実行するためのコードを示します。ここで

var query = graphClient.Cypher 
 
    .Match("(apt_1:AttackPatterns)", "(apt_2:AttackPatterns)") 
 
    .Where((AttackPatterns apt_1) => apt_1.Id == Convert.ToInt64(apt.ID)) 
 
    .AndWhere((AttackPatterns apt_2) => apt_2.Id == Convert.ToInt64(rt.Relationship_Target_ID)) 
 
    .CreateUnique("(apt_1)-[:" + rtrn.ToString() + "]->(apt_2)"); 
 

 
query.ExecuteWithoutResults();

AttackPatternsクラスです。実行時に

public class AttackPatterns 
 
{ 
 
     public long Id { get; set; } 
 
     public string Name { get; set; } 
 
}

、クエリの値を次のように、一回の反復では、相当:

MATCH(apt_1:AttackPatterns)、(apt_2:AttackPatterns)\ rを\ nWHERE (apt_1) - [:ChildOf] - >(apt_2)

私は気付いたことがありますか?(apt_1.Id = \ "1 \")\ r \ nAND(apt_2.Id = \ "122 \") "\ r \ n"文字。また、引用符は1と122になります。これをNeo4jのWebインターフェイスに貼り付けて、 "\ r \ n"を実際の新しい行に置き換え、引用符の前に "\"エスケープ文字を削除すると失敗します。 1と122の周りの引用符を削除すると、関係が正常に作成されます。

私が間違っていることは本当にわかりませんし、助けていただければ幸いです!

+0

'rt'はどんなタイプですか?' apt'は 'AttackPatterns'ですか? –

答えて

0

私はを考えるように私は、私は何が起こっているのを知って、種類についていくつかの仮定を作った - 基本的には - Convert.ToInt64は、クエリが行われる前に呼び出されではありません、あなたはクエリ生成の外にそれをしなければなりません:

//Given: 
var apt = new { ID = "1" }; 

//Convert outside query 
var ap1Id = Convert.ToInt64(apt.ID); 

//Use in query 
var query = gc.Cypher 
    .Match("(apt_1:AttackPatterns)", "(apt_2:AttackPatterns)") 
    .Where((AttackPatterns apt_1) => apt_1.Id == ap1Id) // <-- using locally created var 
/* etc */ 

\r\nはちょうどあなたがDebugQueryTextプロパティを見たとき、彼らは全体で送信されていないフォーマットするために、唯一の問題は、数字の周りに"です。

これをgithubプロジェクトのバグとして追加してみてください。私はそれを見ていきます。理想的には、事前に実行されるのが理想ですが、これは理由のようです。

+0

Chrisに戻ってくれてありがとう。それ以上の洞察が得られた場合は、次のコードを試してみました。 – Jason

+0

var query = graphClient.Cypher .Match( "(apt_1:AttackPattern)"、 "(apt_2:AttackPattern)") .Where "id2"、Convert。(id1)、Convert.ToInt64(apt.ID)) .WithParam( "id1"、Convert.ToInt64(apt.ID)) .AndWhere( "apt_2.Id = {id2}") 。 (apt_1) - [:+ rtrn.ToString()+ "] - >(apt_2)"); – Jason

+0

クールで、 'WithParam'呼び出しが期待通りに評価されます。これは私のバージョンよりも優れています;) –

関連する問題