我通常喜欢自己创建数据库连接,并使用`using {}’手动控制其生命周期.例如: SqlConnection sqlConnection = new SqlConnection( connectionString );using( sqlConnection ) { BusinessObject myBusinessObject = new Busines
SqlConnection sqlConnection = new SqlConnection( connectionString ); using( sqlConnection ) { BusinessObject myBusinessObject = new BusinessObject( sqlConnection ); // do stuff with the business object ... }
通过这种方式,我可以看到并且显而易见的是,我正在使用需要适当清理的资源.然而,这最终会导致很多重复的努力.我很想在业务对象中创建Sql连接并在其上实现IDisposable.我将在Dispose()方法中关闭连接.
using( BusinessObject myBusinessObject = new BusinessObject() ) { // do stuff with myBusinessObject ... }
我遇到的问题是,除非您在使用中看到业务对象,否则可能并不那么明显.
你们会怎么做?
业务对象应该相对于数据库合理(或完全)愚蠢.您应该实现某种访问层对象(存储库或数据上下文),它知道如何将业务对象持久保存到数据库并保持连接逻辑,而不是将代码放在每个业务对象中.您的存储库或上下文将是一次性的,以便它可以自行清理. @ Marc建议您遵循工作单元模式是一个很好的建议.您可能希望查看LINQtoSQL,nHibernate,Subsonic等,以便使用它们,或者至少在如果您坚持编写自己的数据层时如何构建良好的数据层.根据个人经验,我可以告诉您,使用现有技术比编写和维护自己的技术要容易得多.