首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过neo4j中的neo4jclient创建具有字典定义的属性的C#节点

如何通过neo4j中的neo4jclient创建具有字典定义的属性的C#节点
EN

Stack Overflow用户
提问于 2015-02-25 00:21:17
回答 1查看 1.1K关注 0票数 2

作为一个完整的新手程序员,我正在尝试用来自异构源的数据填充我的neo4j数据库。为此,我尝试使用Neo4jClient C# API。我的数据的异构性来自一个自定义的、不断发展的DSL/DSML/元模型,该模型定义了可能的元素类型,即模型,因此为每种类型创建类并不理想。

据我所知,我的选择如下:

  1. 对于每种类型的元素都有一个预定义的类:这样,我就可以轻松地序列化我的对象,也就是说,如果所有属性都是原始类型或数组/列表。
  2. 有一个基类(包含一个用来保存属性的字典),作为我试图序列化的模型和neo4j之间的接口。我在Can Neo4j store a dictionary in a node?上看到了一个这样的例子,但我不明白如何使用转换器(在答案中定义)来添加节点。另外,我看不出基于int的字典如何允许我存储键值对,键(即字符串)将在neo4j中转换为属性名。
  3. 动态生成自定义查询,如https://github.com/Readify/Neo4jClient/wiki/cypher#manual-queries-highly-discouraged所示。这是不推荐的,也可能是不可行的。

最终,我想要实现的是避免为我拥有的每一种类型的元素定义一个单独的类,但仍然能够添加由元模型中的类型定义的属性。

我还想以某种方式影响序列化程序,以忽略不兼容的属性(类似于XmlIgnore),这样我就不需要为每个类创建一个单独的类,这些类的类型不仅仅是原语类型。

谢谢你,J

EN

回答 1

Stack Overflow用户

发布于 2015-02-25 08:41:54

您正试图解决两个问题-第一个问题是如何编写C#部分的程序,第二个问题是如何存储第一个问题的解决方案。

在某种程度上,您需要在C#代码中访问这些数据--除非您要完全使用dynamic,否则您需要有某种类结构。

有三个选择:

  1. 请看一下这个问题:neo4jclient heterogenous data return,我认为它涵盖了这个场景。
  2. 在这个答案中,转换器为您完成工作,您可以像以前一样使用createdelete等,在这种情况下,转换器只处理IDictionary实例。答案中的IDictionary<int, string>就是一个例子,你可以使用你想要的任何东西,如果你想要的话,你可以使用IDictionary<string, string> --在这个例子中,你所需要做的就是将IntString属性更改为一个IDictionary<string,string>,它应该可以工作。
  3. 即使您继续使用自定义查询(您确实不需要这样做),您仍然需要将对象作为类返回。没有什么改变,它只会让你的生活更加艰难。

XmlIgnore而言-你试过JsonIgnore吗?或者-查看自定义转换器,并将不兼容的属性输入到DB中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28708954

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档