如何有效地将对象保存到SQL 2000数据库

时间:2009-06-25 05:13:13

标签: design-patterns oop sql-server-2000

过去,只要我的应用程序需要将许多记录插入到SQL 2000 db中,我就会为每条记录调用一次存储过程。插入许多记录时,我发现性能受到影响,特别是在使用胖客户端时,调用Web服务来执行数据库调用。

然后我了解到,如果我传递表示许多记录的XML数据,那么SQL 2000可以将其保存到临时表中,并且我可以使用在temp的所有行中操作的单个SQL有效地处理XML表中的记录同时表。这样可以将对SP的调用次数减少到1,并且因为SQL更新命令同时处理多个记录,因此效率更高。

我个人喜欢使用Business Objects(BO)层,并且对LINQ或Entity Framework没有经验,所以暂时假设这些工具超出了范围......

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

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

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

为了保持这篇文章的大小不变,我将尽力避免进一步证明这种方法,并向我们提出自己的建议。

优秀的开发人员如何做这样的事情?

在下面的代码示例中,您将看到我如何尝试定义我的对象以便它们可以嵌套但是当您为父对象调用Todataset函数时,所有子对象都使用模式滚动到它中由基类定义。 (代码不是很长,也许我应该发布它。如果我被发现,我会发布它)

我期待一些可怕的反应。善待。 : - )

感谢您有兴趣阅读此内容。

http://sites.google.com/site/dokmanc/Home/ObjectToDataset.zip?attredirects=0

2 个答案:

答案 0 :(得分:0)

绝对令人敬畏的策略。不要改变一件事。

答案 1 :(得分:0)

你看过SqlBulkCopy Class吗?

顺便说一下,我刚看到这个问题。但是,我仍然可能会犹豫不决地回答它,甚至是非常阅读它。一旦你解释了你发送XML以便有效地加载数据,你几乎已经说了所有你必须说的,以便回答问题。