更新:最終的には単純な追加だったので、先に進んで追加しました。1.0.0.517の時点で、以下にリンクされている提案が実装され、NuGetで利用できるようになりました。
クエリは次のようになります。
var query = client
.Cypher
.Start(
new CypherStartBitWithNodeIndexLookup("left", AUTOINDEX, PrimaryIndexKey, uname),
new CypherStartBitWithNodeIndexLookupWithSingleParameter("right", AUTOINDEX, luceneQuery)
)
.CreateUnique("left-[r:Installed {DeviceId:{DeviceId},OS:{OS}}]->right")
.WithParam("DeviceId", 123)
.WithParam("OS", "Windows 8")
.Return<Software>("right");
あなたは今これを良い方法で行うことはできません。
はい、サイファーパラメータはすべてインジェクションから安全です。それらをクエリテキストから分離するために、まったく異なる構成でネットワークを介して渡します。Neo4jでは、クエリの実行プランとは関係なく保存されます。
https://bitbucket.org/Readify/neo4jclient/issue/66/support-custom-parameters-in-cypher-fluentで、提案された構文を使用して問題を開いたので、実装できます。あなたが提案を検討し、そこで協力すれば、私たちはこれをかなり迅速に得ることができます。
回避策として、おそらく次のことを行うことができます。
var query = client
.Cypher
.Start(
new CypherStartBitWithNodeIndexLookup("left", AUTOINDEX, PrimaryIndexKey, uname),
new CypherStartBitWithNodeIndexLookupWithSingleParameter("right", AUTOINDEX, luceneQuery)
)
.CreateUnique("left-[r:Installed {DeviceId:{DeviceId},OS:{OS}}]->right")
.Return<Software>("right")
.Query;
query.QueryParameters.Add("DeviceId", 123);
query.QueryParameters.Add("OS", "Windows 8");
var results = client.ExecuteGetCypherResults<Software>(query);
私はそのコードをここの回答ボックスに書きましたが、テストしていません。それは恐ろしくて醜いので、使用しないでください。