トランザクションのサポートは、Neo4j 2.0 およびそれ以降のバージョンの Neo4jClient で提供されます。この問題は作業を追跡しています: https://bitbucket.org/Readify/neo4jclient/issue/91/support-cypher-transactions-integrated
それはあなたにユニークさを与えません...
Neo4j には、このアイデアを自動的に適用するための一意のインデックスはありません。(将来、Neo4j 2.0 ラベルでこれが見られると思いますが、まだです。)
a) 作成しているものが一意であることを認識するか、b) 最初に確認する必要があります。
あなたはBルートを取っているようです。
トランザクションを使用すると、単一のトランザクション アクション内でチェックを行ってから作成できますが、ネットワーク上で複数の呼び出しを行うこともできます。
実際には、書き出された Cypher テキストが優先されます。1 つのステートメントでチェックと作成を行います。これがハックだと思う理由を知りたいです。
次のようなNeo4jClient経由でこのステートメントを実行できます。
var id = 123;
graphClient.Cypher
.Start(new { n = Node.ByIndexLookup("node_auto_index", "name", id)})
.With("count(*) as c")
.Where("c=0")
.Create("x={0}", new MyType { name = id })
.Return<Node<MyType>>("c")
With
andステートメントのいくつかは、Where
それらがよりきれいであればいいのですが、今のところ機能しています。
あなたのシナリオもカバーするかもしれないCypher's CREATE UNIQUE
clause もあります。