CypherTypeException:不支持包含非基本类型数组的属性

时间:2014-07-10 06:23:30

标签: neo4j graph-databases neo4jclient

我在使用C#Client for NEO4J在NEO4J 2.0.3中创建节点时遇到此异常。 我的节点结构就像这样

namespace UserGraph.BusinessObjects
{
    public class UserInfo
    {
        public int UserID { get; set; }
        public string UserName { get; set; }
        public int HeadendId { get; set; }
        public int Score { get; set; }
        public string ThirdPartyObjID { get; set; }
        public long ThirdPartyTypeId { get; set; }
        public string[] ThirdPartyFriendsIds { get; set; }
        public List<Programme> Programs { get; set; }
        public List<Channel> Channels { get; set; }
    }

    public class Channel
    {
        public long ChannelID { get; set; }
        public String ChannelName { get; set; }
    }

    public class Programme
    {
        public long ProgrammeID { get; set; }
        public String ProgrammeName { get; set; }
    }
}

我认为Neo4j节点不包含复杂数据。我在此链接上搜索并找到了http://docs.neo4j.org/chunked/stable/graphdb-neo4j-properties.html  任何人都可以告诉我有什么方法可以存储我的UserInfo类中的通道和程序对象列表。

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,我不确定我同意所有复杂的“属性”应该是关系的概念。在一天结束时,整个“节点”应该是可以序列化和存储的东西 - 这是使用JSON序列化/反序列化节点的优点之一。编码以下

public class Address {
    public string Line1 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string Country { get; set; }
}

public class User {
    public string Name { get; set; }
    public string email { get; set; }
    public Address HomeAddress { get; set; }
    public Address WorkAddress { get; set; }
}

虽然可以完成地址的创建节点,但我会问一个问题 - 为什么开发人员必须为这样的事情创建节点和关系。如果我从不打算独立于主用户对Address类的属性进行任何直接查询,那么将整个用户视为复杂对象并将其完整地存储为该节点中的节点数据要简单得多。曲线图。