C# 尝试将Neo4j与ASP.NET Core连接
我无法将Neo4j与我的ASP.NET核心Web应用程序连接。 我已经安装了Neo4j。驱动程序包,我补充道C# 尝试将Neo4j与ASP.NET Core连接,c#,asp.net-core,neo4j,C#,Asp.net Core,Neo4j,我无法将Neo4j与我的ASP.NET核心Web应用程序连接。 我已经安装了Neo4j。驱动程序包,我补充道 "NeO4jConnectionSettings": { "Server": "bolt://localhost:7687", "UserName":"neo4j", "Password":"<password>"
"NeO4jConnectionSettings": {
"Server": "bolt://localhost:7687",
"UserName":"neo4j",
"Password":"<password>"
}
“NeO4jConnectionSettings”:{
“服务器”:bolt://localhost:7687",
“用户名”:“neo4j”,
“密码”:”
}
输入appsettings.json。我也有
services.AddSingleton(GraphDatabase.Driver("bolt://localhost:7687", AuthTokens.Basic("neo4j", "<password>")));
services.AddSingleton(GraphDatabase.Driver(“bolt://localhost:7687,AuthTokens.Basic(“neo4j”,即“);
在Startup.cs中的ConfigureServices方法中。在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();
}
}
公共类索引模型:PageModel
{
专用只读IDriver\u驱动程序;
专用只读ILogger\u记录器;
公共字符串结果;
公共索引模型(ILogger记录器、IDriver驱动程序)
{
_记录器=记录器;
_司机=司机;
}
公共异步void GetAsync()
{
iResult光标;
var list=新列表();
IAsyncSession会话=_driver.AsyncSession();
尝试
{
cursor=wait session.RunAsync(@)匹配(a:Movie)
将a.name作为name返回
限额(10”);
列表=等待光标。ToListSync(记录=>
记录[“名称”].As());
}
最后
{
等待会话。CloseAsync();
}
结果=list.FirstOrDefault();
}
}
它不会返回任何结果。
我遗漏了什么?您的连接有问题或没有结果 看起来你只是得到了一个空的结果。查看您的查询,我非常确定您使用的是默认的Actors/Movies数据库集。如果是,则
电影
实体不包含名称
属性。您需要使用标题
try
{
cursor = await session.RunAsync(@"MATCH (m:Movie)
RETURN m.title AS title
LIMIT 10");
list = await cursor.ToListAsync(record =>
record["title"].As<String>());
}
试试看
{
cursor=wait session.RunAsync(@)匹配(m:Movie)
返回m.title作为title
限额(10”);
列表=等待光标。ToListSync(记录=>
记录[“title”].As());
}
另外,当您使用Razor Pages时,如果您使用默认的方法名称处理约定,您的
GetAsync
方法应该被称为OnGetAsync
/OnGet
您连接有问题还是没有结果
看起来你只是得到了一个空的结果。查看您的查询,我非常确定您使用的是默认的Actors/Movies数据库集。如果是,则电影
实体不包含名称
属性。您需要使用标题
try
{
cursor = await session.RunAsync(@"MATCH (m:Movie)
RETURN m.title AS title
LIMIT 10");
list = await cursor.ToListAsync(record =>
record["title"].As<String>());
}
试试看
{
cursor=wait session.RunAsync(@)匹配(m:Movie)
返回m.title作为title
限额(10”);
列表=等待光标。ToListSync(记录=>
记录[“title”].As());
}
另外,当您使用Razor Pages时,如果您使用默认的方法名称处理约定,您的
GetAsync
方法应该被称为OnGetAsync
/OnGet
不,我已经创建了自己的数据库。在Neo4j浏览器中运行“MATCH(a:Movie)RETURN a.name as name limit 10”将返回我想要的结果。在上面的示例中,我使用@Model.result在Index.cshtml中显示了我的“result”变量,它是空的。“list”变量在执行查询并耗尽光标后是否填充了任何数据,发布你的电影实体的模式。@MilošVeljanovski也检查一下答案中关于剃须刀页面的部分。我刚刚解决了这个问题。已将GetAsync更改为OnGetAsync()。谢谢你抽出时间。不,我已经创建了自己的数据库。在Neo4j浏览器中运行“MATCH(a:Movie)RETURN a.name as name limit 10”将返回我想要的结果。在上面的示例中,我使用@Model.result在Index.cshtml中显示了我的“result”变量,它是空的。“list”变量在执行查询并耗尽光标后是否填充了任何数据,发布你的电影实体的模式。@MilošVeljanovski也检查一下答案中关于剃须刀页面的部分。我刚刚解决了这个问题。已将GetAsync更改为OnGetAsync()。谢谢你抽出时间。