C# Neo4jClient使用属性创建关系,并在以后进行更新

C# Neo4jClient使用属性创建关系,并在以后进行更新,c#,neo4j,neo4jclient,C#,Neo4j,Neo4jclient,我有一个Neo4jClient的朋友关系类,我想用它来管理我社交网站上的朋友。我没有为每个可能的好友状态(请求、接受、拒绝、阻止)创建单独的关系,而是向我的好友关系类添加了一个属性。但是,当使用Neo4jClient序列化该类时,它不会在关系上创建Status属性 这是我的人际关系课: /// <summary> /// Friendship relationship - User is a friend of a User with a Status of REQUESTED, A

我有一个Neo4jClient的朋友关系类,我想用它来管理我社交网站上的朋友。我没有为每个可能的好友状态(请求、接受、拒绝、阻止)创建单独的关系,而是向我的好友关系类添加了一个属性。但是,当使用Neo4jClient序列化该类时,它不会在关系上创建Status属性

这是我的人际关系课:

/// <summary>
/// Friendship relationship - User is a friend of a User with a Status of REQUESTED, ACCEPTED, DENIED, BLOCKED
/// </summary>
public class Friend : Relationship, IRelationshipAllowingSourceNode<User>,
    IRelationshipAllowingTargetNode<User>
{
    public static readonly string TypeKey = "FRIEND";

    public string Status { get; set; }

    public Friend(NodeReference targetNode)
        : base(targetNode)
    { }

    public override string RelationshipTypeKey
    {
        get { return TypeKey; }
    }
}

我希望以后能够查询所有朋友关系,并根据Status属性返回不同的集合。我还希望能够更新朋友关系的状态属性。请建议如何正确添加Status属性。

进一步研究后,我发现您需要为继承的泛型关系类提供有效负载类,如下所示:

/// <summary>
/// Friendship relationship - User is a friend of a User with a Status of REQUESTED, ACCEPTED, DENIED, BLOCKED
/// </summary>
public class Friend : Relationship<FriendPayload>, IRelationshipAllowingSourceNode<User>,
    IRelationshipAllowingTargetNode<User>
{
    public static readonly string TypeKey = "FRIEND";

    public Friend(NodeReference targetNode)
        : base(targetNode)
    { }

    public override string RelationshipTypeKey
    {
        get { return TypeKey; }
    }
}
这将允许您向关系中添加属性。从那里,您可以使用Cypher根据关系中的属性获取特定的关系/节点。您还可以使用Cypher更新relationship属性,如下所示:

START n=node(1) MATCH n-[r:FRIEND]-e WHERE e.Name = "Bob" SET r.Status = "ACCEPTED";
注意:您还可以对开始节点使用基于索引的查找


我将尝试在我的博客上为Neo4jClient编写一个基本入门教程,在我已经掌握了基本知识的情况下,将我的所有发现汇集到一个地方。

那太棒了,@Cameron tinker!发布后请通知我。我的教程现在可用:
public class FriendPayload
{
    public string Status { get; set; }
}
START n=node(1) MATCH n-[r:FRIEND]-e WHERE e.Name = "Bob" SET r.Status = "ACCEPTED";