QuickGraph可以支持这些要求吗? (包括数据库持久性支持)

时间:2010-04-27 01:50:28

标签: quickgraph

QuickGraph能否帮助我满足下面的要求?

(a)想要对节点和节点之间的方向关系进行建模 - 例如,模拟在URL下链接的网页/文件,或者建模IT基础设施和硬件/软件之间的依赖关系。该库将包括诸如

之类的方法
* Node.GetDirectParents()   //i.e. there could be more than one direct parent for a node
* Node.GetRootParents()  //i.e. traverse the tree to the top root parent(s) for the given node
* Node.GetDirectChildren()
* Node.GetAllChildren()

(b)必须将数据持久保存到数据库中 - 因此它应该支持SQL Server,理想情况下也应该支持SQLite。

如果确实支持这些要求,那么我很乐意听到:

  1. 指向任何部分的任何指针 QuickGraph深入挖掘?

  2. 什么是最好的概念呢 用法如何使用 数据库持久性 - 是一个 更简单的设计假设每一个 搜索/方法直接在 数据库,或QuickGraph支持 智能能够在记忆中工作 并且“保存”到数据库全部 改变在适当的点 时间(例如像ADO.net一样 DataTable等)

  3. 提前致谢

1 个答案:

答案 0 :(得分:1)

格雷格,

一个。是的,Quickgraph可以很容易地以这种方式搜索节点。我已在您的other question中提供了一个示例。

湾据我所知,SQL序列化并非“内置”给QuickGraph;你必须建立自己的自定义实现。由于大多数图表不仅仅代表一个简单的顶点和节点列表,因此在QuickGraph中自动(原生)完成此操作非常困难,但实现起来相当简单。

  1. 您可以查看QuickGraph源代码中的GraphML序列化部分。这可能会给你一些启动提示。
  2. QuickGraph在内存中工作,它不能“对抗”持久性存储,并且不适用于(因为持久性存储通常很慢)。因此,您需要手动保存信息。但是,您可以监视不同的QuickGraph事件,如VertexAdded,VertexRemoved,EdgeAdded和EdgeRemoved,以确定图表何时发生更改,然后在这些时间执行序列化。
  3. -Doug