Я столкнулся со странной проблемой. Первоначально я разработал базу данных и API, используя редакцию Desktop и .Net Core Web API. Я написал поисковый запрос, чтобы найти узлы на основе взаимоотношений:
var results = _client.Cypher
.Match("(n:Person {userId: {userId}})-[]->(ct:ConnectionType)<-[]-(other:Person)")
.Where("ct.key IN {ctQuery}")
.WithParams(new
{
searchDto.userId,
ctQuery = searchDto.connectionType
})
.ReturnDistinct((other) => new
{
Profile = other.As<SearchResultsDto>()
}).Results;
Работая локально, все работало нормально. Однако когда я перенес API и базу данных на сервер Linux, был возвращен пустой результат.
Кажется, проблема связана с типами данных, которые я использую. Свойство «ключ» подключенного узла является целым числом. Объект ctQuery является int []. Когда на рабочем столе все работало нормально. Я открыл браузер и использовал тот же запрос, но все равно не получил результатов при подключении к Enterprise Server. При подключении к базе данных Desktop я получил результаты.
Мне удалось получить результаты, если я изменил int [] на строку [].
Есть ли на предприятии параметр, запрещающий запрашивать int-массивы? Если так, это может быть изменено?
У меня есть много запросов, которые будут использовать ключ, и я бы не хотел постоянно преобразовывать строки в целые и обратно.