gpt4 book ai didi

.net - 是否将数据库连接封装在业务对象中?

转载 作者:太空狗 更新时间:2023-10-30 02:01:11 25 4
gpt4 key购买 nike

我通常喜欢自己创建数据库连接并使用“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 等以使用它们,或者至少了解如何构建良好数据层的想法。根据个人经验,我可以告诉您,使用现有技术比编写和维护自己的技术要容易得多。

关于.net - 是否将数据库连接封装在业务对象中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/692713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com