我有一个相对复杂的实体模型,它基于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; }
}
答案 0 :(得分:0)
问题是你无法将复杂的类型存储到Neo4j中,它只是不接受它们 - 无论你是使用接口还是只使用类(我想你都是这样)如果您尝试将其存储在数据库中,请获取CypherTypeException
。
要解决这个问题,我已经遇到的最佳途径是使用自定义序列化程序(Neo4jClient
完全可以使用),如答案中所示对于这个问题:Can Neo4j Store a Dictionary in a Node。
显然,在您的情况下,将Dictionary
替换为您的类型。如果需要,您可以制作更通用的版本以涵盖多种类型。