简体   繁体   English

尝试将 Neo4j 与 ASP.NET 核心连接

[英]Trying to connect Neo4j with ASP.NET Core

I'm having trouble connecting Neo4j with my ASP.NET Core Web App.我无法将 Neo4j 与我的 ASP.NET 核心 Web 应用程序连接起来。 I've installed Neo4j.Driver package, I've added我已经安装了 Neo4j.Driver package,我已经添加

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

into appsettings.json.进入 appsettings.json。 I also have我也有

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

in ConfigureServices method in Startup.cs .Startup.csConfigureServices方法中。 In Index.cshtml.cs I am runnning在 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();
    }
}

which returns no results.不返回任何结果。 What am I missing?我错过了什么?

You have trouble connecting or you get no result?连接有问题或没有结果?

It seems like you're just getting an empty result.看起来你只是得到一个空的结果。 Looking at your query, I am pretty sure you're using the default Actors/Movies database set.查看您的查询,我很确定您使用的是默认的演员/电影数据库集。 If so, the Movie entity doesn't contain a name property.如果是这样,则Movie实体不包含name属性。 You need to use title .您需要使用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>());
}

Also, as you're using Razor Pages , if you're using the default convention for method name handling, your GetAsync method should be called OnGetAsync / OnGet .此外,当您使用Razor Pages时,如果您使用方法名称处理的默认约定,则您的GetAsync方法应称为OnGetAsync / OnGet

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM