Neo4j Driver C# Lepaskan daftar objek

Saya mencari cara melepas daftar objek (dalam memori) ke Neo4j 4.0. Di bawah ini adalah apa yang saya sebelumnya menggunakan nuget Neo4jClient tetapi saya harus beralih ke nuget Neo4j.Driver sebagai gantinya.

Neo4jClient (lama)

graphClient.Cypher
    .Unwind(towns, "tp")
    .Merge("t:Town {Name: tp.Id})")
    .OnCreate()
    .Set("t = tp")
    .ExecuteWithoutResults();

Driver Neo4j (selesai sejauh ini)

var session = driver.AsyncSession(o => o.WithDatabase("neo4j"));
        try
        {
            towns = towns.OrderBy(tt => tt.Id).ToList();
            foreach (var t in towns.Split(5000))
            {
                    Console.WriteLine($"Saving {t.Count:N0} of {town.Count:N0} Towns...");    
        **//STUCK HERE DOING UNWIND**  
            }
        }
        catch (Exception ex)
        {
            string error = $"ERROR (ADD TOWNS): {ex.ToString()}";           
            Console.WriteLine(error);
        }
        finally
        {
            await session.CloseAsync();
        }

person Liam    schedule 16.04.2020    source sumber


Jawaban (1)


Sayangnya Driver Neo4j cukup sederhana - Anda perlu membuat kueri Cypher dengan tangan, mengacu pada parameter jika diperlukan, lalu meneruskan parameter tersebut ke dalam kueri.

var session = driver.AsyncSession(o => o.WithDatabase("neo4j"));
try
{
    towns = towns.OrderBy(tt => tt.Id).ToList();
    foreach (var t in towns.Split(5000))
    {
        Console.WriteLine($"Saving {t.Count:N0} of {town.Count:N0} Towns...");

        // Just return the town name - in your case, you'd MERGE or whatever, this is 
        // just an example
        var query = new Query("UNWIND {towns} AS town RETURN town", new Dictionary<string, object>
        {
            { "towns", towns }
        });

        var result = await session.RunAsync(query);
    }
}
catch (Exception ex)
{
    string error = $"ERROR (ADD TOWNS): {ex.ToString()}";
    Console.WriteLine(error);
}
finally
{
    await session.CloseAsync();
}
person Pablissimo    schedule 18.04.2020