我正在编写一个将与SAP Business One集成的GUI。我很难确定如何以最佳方式加载,编辑和保存数据(可靠,快速,简单)。
我有两个名为Structures和StructureRows的表(不是很棒的名字)。结构可以包含其他结构,泛型和细节。结构行包含所有这些项,并具有与之关联的类型。泛型是特定的占位符,具体是库存中的实际项目。
作业将包含作业元数据以及n个结构。在编辑作业的屏幕上,您可以添加结构和删除结构以及编辑它们下面的行。例如,如果您将结构1添加到作业1并且结构1包含通用1,则用户可以将通用1替换为特定。
我了解如何存储数据,但我不知道加载和保存数据的最佳方法是...
我看到了几个不同的选择:
抛弃我的部分是能够为结构添加结构。如果不是这样,我会从StructureRows表中选择Specifics和Generics,并根据它们所属的Structure将它们分组到GUI中。我会将它们放在DataTable中并将其绑定到GridView,这样任何更改都会自动保存到DataTable,然后我可以转身将它们很容易地推送到SQL ...
通过对象模型手动加载和保存数据是我唯一的选择吗?如果没有,你会怎么做?我不确定我是否只是将它变得更复杂然后需要它或者如果这对C#,ADO.NET和MS SQL实际上很难做到。
答案 0 :(得分:0)
在SQLServer 2008中引入了HierarchyID数据类型来处理这种事情。我自己没有这样做,但这里有一个place to start给出了一个如何使用它的公平例子。
话虽这么说,如果你不拘泥于当前的表格,并且不需要查询单个元素(换句话说,你总是在处理整个工作),我会受到诱惑将每个作业的数据存储为XML。 (如果您正在使用基于Web的应用程序,那么您也可以使用JSON。)它保留了层次结构,.NET中有许多用于处理XML的工具。还有一个用于winForms的内置TreeView class,并且无疑可以使用其他第三方控件。