鉴于
我要将一组数据插入到neo4j中。目前我为
创建了方法a)插入一批节点
public Task AddNodesAsync<T>(List<T> nodes)
{
return client.Cypher.Create("(n:" + typeof(T).Name + " {nodes})").WithParams(new
{
nodes
}).ExecuteWithoutResultsAsync();
}
b)相关的2种节点
public async Task LinkVertices<TSource, TTarget>(Expression<Func<TSource, TTarget, bool>> join, string relationName)
{
string sourceName = typeof(TSource).Name;
string targetName = typeof(TTarget).Name;
await client.Cypher
.Match(string.Format("({0}:{0})", sourceName), string.Format("({0}:{0})", targetName))
.Where(join)
.Create(string.Format("{0}-[:{2}]->{1}", sourceName, targetName, relationName))
.ExecuteWithoutResultsAsync();
}
现在我拨打AddNodesAsync<T>
2次,之后我调用第二种方法来链接它们。 Likethis:
AddNodesAsync(Projects);
AddNodesAsync(myCustomers);
LinkVertices<Projects,Customer>((project,customer) => project.customerId == customer.id,"projectsOfCustomer");
这样可以正常工作,但是我自问这是否是一个很好的解决方案。 我可以看到,尤其是链接过程非常缓慢。
所以我的问题是
neo4j初始化的推荐方法是什么?
显示我使用C#Api? restfull api?或事件csv导入程序? 第二个问题是有一种方法可以在一个步骤中插入带有链接的两个批次吗?我希望这可能会更快。