c# – 使用.NET DataSet的正确方法是什么?

我正在试图找出使用.NET DataSet的正确方法.您是否应该为数据库中的每个表创建一个DataTable并在DataSet中创建关系?在DataSet中重建整个数据库结构对我来说似乎很疯狂.

我将使用我的数据库的简化示例.
假设我有一个CompanyEquipment表.每台设备属于成本中心,成本中心数据存储在CostCenter表中,与CompanyEquipment表相关.假设我有一个存储过程返回已与CostCenter表连接的CompanyEquipment数据,以返回一个查询中的所有信息.我可以使用存储过程来填充DataTable,但是如何将这个非规范化结果表保存回数据库?我不知道这是否是一个很好的方法.查询使用关联(桥接)表的多对多关系,无论如何我都需要多次查询.例如,我有一个EquipmentRole表,它存储不同的设备用法,以及一个EquipmentRoleAssignment表,其中可以为设备分配多个角色.

或者,如果我有模仿数据库的DataTables,我将不得不使用每个表上的DataAdapter.Fill()分别查询每个表,以将相关数据放入每个DataTable中.所以我想从CompanyEquipment中选择*,其中equipID = 1234,我会用适配器来填充CompanyEquipment DataTable,然后我将不得不使用另一个查询select * from CostCenter,其中costCenterID =< costcenterID来自companyequipment记录>并填写CostCenter DataTable.使用这种方法,我必须两次打到数据库,我失去了DBMS执行连接的能力. 我是数据驱动应用程序的新手,所以我不熟悉工作流程;特别是我应该多少次访问数据库以获得一个数据表示.任何帮助表示赞赏.我在C#工作.

解决方法

我过去曾经使用过数据集(很久以前),根据我的经验,这是我的0.02美元

选项1和选项2都是关于如何使用数据集的有效方案.

对于检索场景: –
这取决于您使用数据的方式.

例如,在您知道所有主表相关表数据正在例如立即显示用户的情况下,选项1可能是优选的.

但是,在一个场景中,您可能会显示一个包含主表数据的表,并且仅在单击一行时显示相关的表信息,最好选择选项2,因为它允许您按要求获取数据.

对于插入/更新方案

选项2在内存结构模仿数据库的情况下效果最佳.因此,使用适配器甚至命令构建器对象和数据路由状态(插入/更新/删除),您可以轻松插入/更新/删除相应的数据,而不会有太多麻烦.如果您要使用选项1,则需要编写逻辑以将其拆分并自行保存到单独的表中.

希望这很有用.但是,像大多数现实生活中的情景一样,它确实取决于

注意:我完全避免使用数据集/数据表,并且由于它们是非常重的对象而我有一段时间,因此往往会耗费资源.如果您确实使用它们,请确保根据您的性能要求测试性能,以确保它们不会长期不适合

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...