当前位置 : 主页 > 手机开发 > 其它 >

.net – 要在业务对象中封装数据库连接吗?

来源:互联网 收集:自由互联 发布时间:2021-06-19
我通常喜欢自己创建数据库连接,并使用`using {}’手动控制其生命周期.例如: SqlConnection sqlConnection = new SqlConnection( connectionString );using( sqlConnection ) { BusinessObject myBusinessObject = new Busines
我通常喜欢自己创建数据库连接,并使用`using {}’手动控制其生命周期.例如:

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等,以便使用它们,或者至少在如果您坚持编写自己的数据层时如何构建良好的数据层.根据个人经验,我可以告诉您,使用现有技术比编写和维护自己的技术要容易得多.

网友评论