0

我正在编写一个将与 SAP Business One 集成的 GUI。我很难确定如何以最佳方式(可靠、快速、简单)加载、编辑和保存数据。

我有两个表,分别称为 Structures 和 StructureRows(不是好名字)。一个结构可以包含其他结构、泛型和细节。结构行包含所有这些项目并具有与之关联的类型。仿制药是具体的占位符,具体是库存中的实际项目。

一个作业将包含作业元数据以及 n 个结构。在编辑作业的屏幕上,您可以添加结构和删除结构以及编辑它们下面的行。例如,如果您将结构 1 添加到作业 1 并且结构 1 包含通用 1,则用户将能够将通用 1 交换为特定。

我了解如何存储数据,但我不知道加载和保存数据的最佳方法是什么......

我看到了一些不同的选择:

  1. 当有人向作业添加结构时,加载该结构,然后递归加载它下面的任何结构(泛型和细节已经加载)。我会将这一切都放入一个对象模型中,例如 List,每个 Structure 对象都有 List 和 List。当我将更改保存回数据库时,我必须手动循环数据并保留更改。
  2. 以某种方式将数据加载到 SQL 中的视图中,然后在客户端对数据表/数据集进行分组和排序。将数据绑定到 GridView,以便更改自动反映在数据集中。当你去保存时,SQL/ADO.NET 可以自动处理这个吗?这似乎是理想的解决方案,但我不知道如何实际实施它......

让我失望的部分是能够将结构添加到结构中。如果不是为了这个,我会从 StructureRows 表中选择Specifics 和Generics,然后根据它们所属的结构在GUI 中对它们进行分组。我会将它们放在 DataTable 中并将其绑定到 GridView,这样任何更改都会自动保存到 DataTable 中,然后我可以很容易地转身将它们推送到 SQL...

通过对象模型手动加载和保存数据是我唯一的选择吗?如果没有,你会怎么做?我不确定我是否只是让它变得更复杂,或者这实际上很难用 C#、ADO.NET 和 MS SQL 来完成。

4

1 回答 1

0

在 SQLServer 2008 中引入了 HierarchyID 数据类型来处理这种事情。我自己还没有做过,但这里是一个开始的地方,它给出了如何使用它的一个公平的例子。

话虽这么说,如果您不拘泥于当前的表,并且不需要查询单个元素(换句话说,您总是将工作作为一个整体来处理),我会很想存储XML 格式的每个作业的数据。(如果您正在开发一个基于 Web 的应用程序,您也可以使用 JSON。)它保留了层次结构,并且 .NET 中有许多用于处理 XML 的工具。还有一个用于 winForms 的内置TreeView 类,毫无疑问还有其他可用的第三方控件。

于 2013-06-08T01:16:12.897 回答