Я делаю приложение, которое используется для управления чатом.Neo4j с C#: Создайте связь между двумя существующими узлами, в противном случае dont
У меня есть 2 C# классов:
public class Person
{
public string Name { get; set; }
public string Password { get; set; }
}
public class PrivateMessage
{
public long Id { get; set; }
public string Content { get; set; }
public long Stamp { get; set; }
public bool Received { get; set; }
}
Все, что я хочу, чтобы создать связь со свойствами PrivateMessage в возрасте от 2 людей.
Я создал Cypher запрос следующим образом:
// Create a message from 'Doctor B' to 'Patient B'.
MATCH (Sender:Person), (Recipient:Person)
WHERE Sender.Name = 'Doctor B' AND Recipient.Name = 'Patient B'
CREATE (Sender)-[Message:SENT {Id: 0, Content: 'Hello', Stamp: 1000, Received: false}]->(Recipient)
Но я не знаю, как архив с помощью C#. Кроме того, я хочу, чтобы отношение можно было создать только через 2 узла, иначе оно не может.
Вы можете посмотреть мое изображение более подробно:
Как вы можете видеть, у меня есть 2 сущности: Доктор B и пациент B, я могу создать ОТПРАВЛЕННЫЕ отношения между ними.
Но если я использую этот запрос:
MATCH (Sender: Person), (Получатель: Person) WHERE Sender.Name = 'Доктор А' И Recipient.Name = 'Пациент A' CREATE (Sender) - [Сообщение: SENT {Id: 0, Содержимое: 'Hello', Stamp: 1000, Received: false}] -> (Получатель)
Поскольку нет Доктора A и Пациента A, neo4j create 2 серые узлы с отношением SENT между ними.
Мой вопрос: как я могу предотвратить это, я не хочу создавать серые узлы на этом изображении.
Может ли кто-нибудь мне помочь? Спасибо.
На самом деле, я знаю о подвесной линии, моей целью проверки существования узла является предотвращение висящей линии :). – Redplane
У вас никогда не может быть подвесной линии в Neo4j, это невозможно, отношения имеют начало и конец (они могут быть одинаковыми), но он должен иметь оба, а не только один! –