1

我现在在我的编程开发中,我试图利用面向对象的设计,而不是我一直在做的按钮程序背后的基本功能。

在当前项目中,我正在重复、复制和粘贴 sql server 插入代码并将其迁移到具有属性、方法等的类...

我遇到的一个问题是如何保持与数据库的低连接,同时跨多个对象进行插入,从而跨多个表。

以一种程序方式,我一直在使用 ADO.net 事务写入一个表,然后根据插入的记录的 ID,将附加信息写入另一个表——在第二个作业完成之前不关闭连接。我使用事务,所以如果后面的插入失败,第一次插入可以撤消,并使用 try、catch、finally 关闭连接,无论连接成功还是失败。

您如何在面向对象的世界中处理这个问题?

编辑:感谢大家的回答。我得到它。这是另一个问题,也有助于我澄清:ASP.NET/ADO.NET:处理 .NET 对象内的许多数据库连接?

4

2 回答 2

1

嗯,差别不大。

您的“对象”(我假设您的意思是您正在使用类;这些类的实例代表您的业务领域中的“项目”),不应该关心这些事务。也就是说,他们不应该知道交易,他们不应该负责处理交易。

事务应该由另一个对象发起和处理。某种“经理”。此类启动、提交和回滚事务。
您将在您的应用程序中使用此管理器,例如,在您的表单中。
对我来说,这是处理事务的唯一正确方法,因为您的应用程序知道“上下文”。您的应用程序知道您必须对数据库执行多少次往返,应用程序知道事务应该持续多长时间。你的对象不知道这一点。

于 2009-04-16T14:11:11.057 回答
0

至于管理连接,不要。.Net 将为您保留一个池,并有效地回收它们。试图自己回收它们实际上会损害性能。

除此之外,听起来您做得对,插入,获取 ID,在该范围内使用相同的连接再次插入。

于 2009-04-16T14:10:00.233 回答