.NET C# 操作Neo4j图数据库

.NET C# 操作Neo4j图数据库

目录

  • [.NET C# 操作Neo4j图数据库](# 操作Neo4j图数据库)

环境

VisualStudio2022 + .NET 6 + Neo4j.Driver 5.21

Code

csharp 复制代码
// 连接设置
var uri = "bolt://localhost:7687";
var user = "neo4j";
var password = "password"; // 请替换为你的实际密码

var driver = GraphDatabase.Driver(uri, AuthTokens.Basic(user, password));
var session = driver.AsyncSession();

try
{
    // 创建节点
    var createResult = await session.RunAsync("CREATE (n:Person {name: $name, age: $age}) RETURN n", 
                                              new { name = "Alice", age = 30 });

    var createdNode = await createResult.SingleAsync();
    Console.WriteLine($"Created Node: {createdNode["n"].As<INode>().Properties["name"]}");

    // 查询节点
    var readResult = await session.RunAsync("MATCH (n:Person) WHERE n.name = $name RETURN n", 
                                            new { name = "Alice" });

    var readNode = await readResult.SingleAsync();
    Console.WriteLine($"Read Node: {readNode["n"].As<INode>().Properties["name"]}");

    // 更新节点
    var updateResult = await session.RunAsync("MATCH (n:Person) WHERE n.name = $name SET n.age = $age RETURN n", 
                                              new { name = "Alice", age = 35 });

    var updatedNode = await updateResult.SingleAsync();
    Console.WriteLine($"Updated Node Age: {updatedNode["n"].As<INode>().Properties["age"]}");

    // 删除节点
    var deleteResult = await session.RunAsync("MATCH (n:Person) WHERE n.name = $name DELETE n", 
                                              new { name = "Alice" });

    Console.WriteLine("Deleted Node: Alice");

    // 创建节点 Alice
    var createAlice = await session.RunAsync("CREATE (a:Person {name: $name, age: $age}) RETURN a",
                                             new { name = "Alice", age = 30 });

    var aliceNode = await createAlice.SingleAsync();
    Console.WriteLine($"Created Node: {aliceNode["a"].As<INode>().Properties["name"]}");

    // 创建节点 Bob
    var createBob = await session.RunAsync("CREATE (b:Person {name: $name, age: $age}) RETURN b",
                                           new { name = "Bob", age = 25 });

    var bobNode = await createBob.SingleAsync();
    Console.WriteLine($"Created Node: {bobNode["b"].As<INode>().Properties["name"]}");

    // 创建关系 KNOWS
    var createRelationship = await session.RunAsync(@"
                    MATCH (a:Person {name: $nameA}), (b:Person {name: $nameB})
                    CREATE (a)-[r:KNOWS]->(b)
                    RETURN r",
                                                    new { nameA = "Alice", nameB = "Bob" });

    var relationship = await createRelationship.SingleAsync();
    Console.WriteLine($"Created Relationship: {relationship["r"].As<IRelationship>().Type}");
}
catch (Exception ex)
{
    Console.WriteLine($"An error occurred: {ex.Message}");
}
finally
{
    await session.CloseAsync();
    await driver.CloseAsync();
}
相关推荐
arbboter2 小时前
【网络工具】NetProxy网络代理用户手册
开发语言·网络·c#·网络代理·网络异常·代理工具
微小冷3 小时前
海康威视相机C#二次开发环境配置
数码相机·c#·.net·海康威视·相机开发
安_3 小时前
RAG的向量数据库:为LLM提供语义搜索能力
数据库
喜欢的名字被抢了3 小时前
程序出问题怎么查,以及如何让它不掉线
java·运维·数据库
这个DBA有点耶4 小时前
3000万个应用共享一套数据库:多租户“逻辑表”架构是如何做到的?
数据库·架构·dba
测试运维日常笔记4 小时前
Oracle 数据库连接认证方式详解
数据库·oracle
ClouGence5 小时前
PostgreSQL 同步到 Iceberg:开源、私有部署与 SaaS 方案对比
数据库·postgresql·开源
这个DBA有点耶5 小时前
DBA进阶之路:从“修数据库”到“管架构债”
数据库·架构·dba
ACP广源盛139246256735 小时前
WAIC2026 国产超节点算力浪潮下@ACP#IX9104 在算力矩阵中的定位与落地场景
大数据·数据库·人工智能·嵌入式硬件·线性代数·矩阵
珠***格6 小时前
通信链路全打通:西格电力四可装置的 4G/5G + 加密认证技术详解
大数据·数据库·分布式·5g·架构·能源