【问题标题】:Trying to connect Neo4j with ASP.NET Core尝试将 Neo4j 与 ASP.NET Core 连接
【发布时间】:2021-01-04 15:10:21
【问题描述】:

我在将 Neo4j 与我的 ASP.NET Core Web 应用程序连接时遇到问题。 我已经安装了 Neo4j.Driver 包,我已经添加了

"NeO4jConnectionSettings": {
  "Server": "bolt://localhost:7687",
  "UserName":"neo4j",
  "Password":"<password>"     
  }

进入 appsettings.json。我也有

services.AddSingleton(GraphDatabase.Driver("bolt://localhost:7687", AuthTokens.Basic("neo4j", "<password>")));

Startup.csConfigureServices 方法中。在 Index.cshtml.cs 我正在运行

public class IndexModel : PageModel
{
    private readonly IDriver _driver;

    private readonly ILogger<IndexModel> _logger;
    public string result;

    public IndexModel(ILogger<IndexModel> logger, IDriver driver)
    {
        _logger = logger;
        _driver = driver;
    }

    public async void GetAsync()
    {
        IResultCursor cursor;
        var list = new List<String>();
        IAsyncSession session = _driver.AsyncSession();
        try
        {
            cursor = await session.RunAsync(@"MATCH (a:Movie)
            RETURN a.name as name
            limit 10");
            list = await cursor.ToListAsync(record =>
            record["name"].As<String>());
        }
        finally
        {
            await session.CloseAsync();
        }
        result = list.FirstOrDefault();
    }
}

不返回任何结果。 我错过了什么?

【问题讨论】:

    标签: c# asp.net-core neo4j


    【解决方案1】:

    您无法连接或没有结果?

    看起来你只是得到一个空的结果。查看您的查询,我很确定您使用的是默认的演员/电影数据库集。如果是这样,Movie 实体不包含name 属性。您需要使用title

    try
    {
        cursor = await session.RunAsync(@"MATCH (m:Movie)
            RETURN m.title AS title
            LIMIT 10");
    
        list = await cursor.ToListAsync(record =>
        record["title"].As<String>());
    }
    

    此外,当您使用 Razor 页面 时,如果您使用默认约定处理方法名称,则您的 GetAsync 方法应称为 OnGetAsync/OnGet

    【讨论】:

    • 不,我已经创建了自己的数据库。在 Neo4j 浏览器中运行“MATCH (a:Movie) RETURN a.name as name limit 10”会返回我想要的结果。在上面的示例中,我使用了我的“结果”变量并在 Index.cshtml 中使用 @Model.result 显示它,它是空的。
    • 执行查询并耗尽游标后,'list' 变量是否会填充任何数据?
    • 另外,发布您的电影实体的架构。
    • @MilošVeljanovski 检查答案中关于 Razor Pages 的部分。
    • 我刚刚解决了这个问题。将 GetAsync 更改为 OnGetAsync()。感谢您的宝贵时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2021-05-02
    • 1970-01-01
    • 2019-08-17
    • 2020-12-11
    • 2023-03-29
    • 1970-01-01
    相关资源
    最近更新 更多