Запрос на слияние neo4jclient вызывает необработанное исключение

Я хочу использовать слияние в своем приложении neo4jclient c#, поэтому я прочитал эту ссылку и создайте запрос, как показано ниже:

resultList.ForEach(
tweets => client.Cypher
    .Merge("(tweet:Tweet {newtweet})")
    .OnCreate()
    .Set("tweet = {newtweet}")
    .WithParams(new Tweets(tweets))
    .ExecuteWithoutResults());

Но это крах, и я не знаю, что мне не хватает.

Какая часть моего кода неверна?


person Mohamad MohamadPoor    schedule 18.09.2015    source источник
comment
В примере ссылки он создаст нового пользователя, если он еще не существует, на основе идентификатора пользователя. Вы пытаетесь сделать то же самое здесь. Должен ли быть идентификатор твита? Можете ли вы опубликовать рабочее заявление Cypher?   -  person Olivier De Meulder    schedule 18.09.2015
comment
@OlivierDeMeulder У меня нет рабочего Сайфера! Вы имеете в виду, что я должен добавить свой уникальный идентификатор Twitter в запрос? как ?!   -  person Mohamad MohamadPoor    schedule 18.09.2015
comment
Я предполагаю, что у вас есть список твитов, которые вы пытаетесь ввести в NEO4J. Для каждого твита у вас наверняка есть уникальный идентификатор, автор и сам твит. Функция слияния в NEO4J позволяет обновить существующий узел или создать новый. Чтобы это сработало, вы проверяете идентификатор твита. Как показано в примере по предоставленной вами ссылке. Так ли это?   -  person Olivier De Meulder    schedule 19.09.2015
comment
@OlivierDeMeulder да, это правда, у меня есть идентификатор состояния, который я считаю уникальным ключом для твита, я хочу добавить в свою базу данных, если он еще не существует.   -  person Mohamad MohamadPoor    schedule 19.09.2015


Ответы (1)


Сначала определите свой класс твитов:

public class Tweet {
    public long StatusId { get; set; }
    public string Author { get; set; }
    public string Content { get; set; } 
}

Затем попробуйте это утверждение следующим образом:

var newTweet = new Tweet { StatusId = 2344
    , Author = "@AuthorName"
    , Content = "this is a tweet" };
graphClient.Cypher
    .Merge("(tweet:Tweet { StatusId: {id} })")
    .OnCreate()
    .Set("tweet = {newTweet}")
    .WithParams(new {
        id = newTweet.StatusId,
        newTweet
    })
    .ExecuteWithoutResults();
person Olivier De Meulder    schedule 19.09.2015
comment
Просто стоит добавить, что если вам нужно просмотреть много твитов, это может занять некоторое время, и в этом случае взгляните на оператор Foreach в Cypher, так как вы, вероятно, можете добавить их все одним нажатием. - person Charlotte Skardon; 21.09.2015