支持带接口的复杂对象

时间:2015-01-21 03:31:18

标签: neo4j neo4jclient

我有一个相对复杂的实体模型,它基于Contracts(Interfaces),正在寻找关于使用Neo4j存储实体的最佳方法的想法。有没有人试过这样做?

示例模型。我们的想法是支持存储包含IAddress的用户对象。

public interface IAddress {
    string Line1 { get; set; }
    string Line2 { get; set; }
}

public interface IUser {
    string Name { get; set; }
    IAddress Address { get; set; }
}

public Address : IAddress {
    public string Line1 { get; set; }
    public string Line2 { get; set; }
}

public class User : IUser {
    public User() {
        Address = new Address();
    }

    public string Name { get; set; }
    public IAddress Address { get; set; }
}

1 个答案:

答案 0 :(得分:0)

问题是你无法将复杂的类型存储到Neo4j中,它只是不接受它们 - 无论你是使用接口还是只使用类(我想你都是这样)如果您尝试将其存储在数据库中,请获取CypherTypeException

要解决这个问题,我已经遇到的最佳途径是使用自定义序列化程序(Neo4jClient完全可以使用),如答案中所示对于这个问题:Can Neo4j Store a Dictionary in a Node

显然,在您的情况下,将Dictionary替换为您的类型。如果需要,您可以制作更通用的版本以涵盖多种类型。