我正在开发一个图形编辑器,它使用拖放来构建层次图(包含节点和链接),图中的每个节点都应该链接到我们数据库中的表(SQL Server),我做了很多有关基于javascript或/和JSON规范的库的研究,以绘制节点和链接,有很多很好的例子可供遵循。但我不知道如何将图表链接到数据库(SQL Server,Oracle,MySQL ......)。我想到了这个架构:
我查看了D3库,它创建了数据驱动的图表,但我认为它只使用平面文件,而不是关系数据库。 首先,请您告诉我,我的架构是否经过深思熟虑?其次,可以给我一些关于我将图表链接到DBMS的方法的想法。
非常感谢。
答案 0 :(得分:1)
让我们说节点被反序列化为以下POCO:
public class Node
{
public int id {get;set;}
public string name {get; set;}
public List<int> outBoundConnection {get;set;}
public List<int> inBoundConnection {get; set;}
}
id字段来自数据库。这是您将用于跟踪对象的内容。假设每个行/ node / ..都有一个唯一的id,你需要在整个对象的生命周期中保持这个(Query - &gt; POCO - &gt; JSON - &gt; D3)。此ID将您的D3数据集链接到SQL服务器行。
我希望这有助于作为大纲。
设置一个Web项目,该项目将公开D3将使用的Web服务。
- 醇>
创建一个Web服务来查询节点。以JSON格式返回数据。
您可能希望查看AutoMapper,因为它可以非常轻松地从DataTable / Reader转换为POCO。或者用你最喜欢的语言的DTO / OOM框架。
在此Web服务中:创建与数据库的连接,查询所需的表,执行查询,将返回的数据转换为类对象(AutoMapper),返回构造为JSON的结构。
现在,由于id在整个生命周期中都会保留,因此您可以使用id作为参数向Web服务发出请求。
因此,例如,如果您要删除备注。您可以向接受id作为参数的Web服务端点发出HTTP DELETE请求(jQuery comes in handy here)。
或者,如果要删除连接节点,请创建一个带有两个ID的Web服务,或者连接的ID(如果您以这种方式设置了架构)。
您想要了解图表数据的独特之处。