我基本上有 4 天的时间来获得基本工作水平的东西,这意味着获得在 NHibernate 中创建的图形网络对象。没有什么是完美的,只有可以通过 HNibernate Graph 对象(模型)搜索的东西。
也就是说,我们在 web 表单上有数据字段(本质上是我的对象图中的节点),当一个 fieldK 被更新时,其他字段(FieldB、FieldT 等)会受到影响(取决于那个 fieldK)和由于更新 fieldK,还需要在返回中更新。这只是一个例子,fieldK。
我们更新的这个 fieldK 也可能在其他字段“树”中(我认为在这种情况下是 Graphs)。因此,如果我们更新 FieldA,我们需要进行搜索以查看 FieldA 在哪些其他图中并找到它,然后遍历其子节点并更新这些子节点字段。
所以你基本上有一个图网络类型的结构。
我被要求a)将它存储在数据库中......在这种情况下是SQL Server 2008和b)创建一个NHibernate对象来表示图形,以便我们可以使用它并双向搜索和遍历节点(上下 x 树)并找到 FieldA 并做我们需要做的事情,例如更新它的依赖字段。
所以我的第一个想法是:
1)创建一个包含树结构的表,例如:
表:DataFieldTrees
DataFieldTreeID DataFieldID ParentDataFieldID Level
--------------- ----------- ----------------- -----
0 12 NULL 0 (Tree1)
1 232 12 1
2 32 12 1
3 100 12 1
4 210 100 3
5 500 100 3
6 600 32 4
7 800 600 5
8 44 NULL 0 (Tree2)
9 400 44 1
10 55 44 1
11 111 55 2
12 211 55 2
13 600 111 3
14 43 600 4
15 15 600 5
....more trees and so on
请注意,例如,在两棵树中都找到了 600 和 100 个节点。
现在我想好了,我需要一些方法将在多棵树中找到的那些节点与它们的 RootTreeID 联系起来,所以我想出了这个桥接表:
表:DataFieldRootDataField
RootFieldID 是第一个表中作为树根的字段(带有 NULL 的行)
DataFieldID RootDataFieldID
----------- ---------------
100 0
100 8
600 0
600 8
认为这可以让我快速找出某个节点在哪些树中以进行查找
最后,为了修复图表并使其成为图表,我创建了一个表格来将图表(树)链接在一起(将它们关联起来):
表:DataFieldTreeRelation
RootDataFieldID DataFieldTreeID RelatedDataFieldTreeID
--------------- --------------- ----------------------
8 800 15
...
所以这会将第一棵树链接到第二棵树(因为第一棵树中的节点 800 连接到节点 15)。
我知道当我认为这些树是一组“图表”时我会称它们为“图表”,但我对这一切都很陌生,并且在开始思考如何做到这一点时试图阐明要求和我的想法。
然后是在 C# 中创建并将其解析为 NHibernate Network Graph 对象的整个其他问题......然后我必须确定检索这些东西的最佳方法(创建节点的linkedLists,谁知道在 C# 中基于我拉从这些表中......还不知道我将如何做到这一点并形成一个我们可以搜索的对象)
我要么走了,要么对如何去做有一些体面的想法,但不确定我是否接近正确地思考人们如何处理这个问题......
在这里需要一些帮助和/或指导或保证我的想法是有意义的。