Design patterns 如何高效地将对象保存到SQL 2000数据库

Design patterns 如何高效地将对象保存到SQL 2000数据库,design-patterns,oop,sql-server-2000,Design Patterns,Oop,Sql Server 2000,过去,每当我的应用程序需要在SQL2000DB中插入许多记录时,我都会为每个记录调用一个存储过程。当插入许多记录时,我发现性能会受到影响,特别是当使用胖客户端调用web服务来执行数据库调用时 然后我了解到,如果我传递表示许多记录的XML数据,SQL 2000可以将其保存到临时表中,并且我可以使用一个SQL高效地处理XML表中的记录,该SQL可以同时操作临时表的所有行。这将对SP的调用数量减少到了一个,而且效率更高,因为SQL update命令同时处理多条记录 我个人喜欢使用业务对象BO层,对LI

过去,每当我的应用程序需要在SQL2000DB中插入许多记录时,我都会为每个记录调用一个存储过程。当插入许多记录时,我发现性能会受到影响,特别是当使用胖客户端调用web服务来执行数据库调用时

然后我了解到,如果我传递表示许多记录的XML数据,SQL 2000可以将其保存到临时表中,并且我可以使用一个SQL高效地处理XML表中的记录,该SQL可以同时操作临时表的所有行。这将对SP的调用数量减少到了一个,而且效率更高,因为SQL update命令同时处理多条记录

我个人喜欢使用业务对象BO层,对LINQ或实体框架没有经验,所以现在,让我们假设这些工具超出了范围

在我的BO层中,我通常会向对象添加一个ToDataset函数,以将对象转换为包含一个表的数据集,其中该表包含一个数据行。数据行本身包含对象中数据的表示形式

然后,我将有一个collection类,它是前一个对象的集合,例如。它也将有一个ToDataset方法来创建集合类中所有对象的表示。此函数将循环遍历集合中的对象,对于每个对象,调用objects todata set函数并将此信息合并到一个累积的数据集中

当我想将collection类中的所有记录传递给SP时,我会调用collection类的ToDataset方法,并将ds的XML传递给SP

为了减少这篇文章的篇幅,我将尽量避免进一步证明这种方法的合理性,并接受你的建议

好的开发人员是如何做到这一点的

在下面的代码示例中,您将看到我如何尝试定义对象,以便它们可以嵌套,但当您调用父对象的Todataset函数时,所有子对象都会使用基类定义的模式滚入其中。代码没有那么长,也许我应该发布它。如果我被火烧了,我会把它贴上去

我预计会有一些可怕的反应。仁慈点-

谢谢你对这篇文章的阅读兴趣


绝对是很棒的策略。什么都不要改变。

你看过地图了吗

顺便说一句,我只是看到了这个问题。然而,我仍然可能会犹豫是否要回答它,甚至是否要阅读它的大部分内容。一旦您解释了发送XML是为了高效地加载数据,那么您几乎已经说出了为了回答问题所必须说的一切