我正在使用db4o。 我的问题是关于如何打开和关闭的最佳实践 ASP.NET Web表单中的数据库?
我想在每次保存或更新之前和之后打开和关闭数据库都不是最好的做法,因为这意味着开销,索引丢失等等。
我有一个使用Singleton模式的“System”类,它是唯一连接到数据库的类。在构造函数上,我打开数据库,但我不确定何时关闭它,甚至何时提交。
我是否应该在保存成功后提交每个时间,如果出现错误则回滚?
我应该何时关闭或处置数据库?我应该实现IDisposable接口吗?我应该在我的“系统”类中添加一个析构函数吗?
答案 0 :(得分:4)
我想在每次保存或更新之前和之后打开和关闭数据库都不是最好的做法,因为这意味着开销,索引丢失等等。
是更好的做法。 Connection Pooling将解决性能问题。
如果在同一范围内有两个“保存”和“更新”,请使用1个连接。
但是不要尝试缓存连接。正确地释放它更为重要。
根据经验,只使用连接变量作为本地变量,最好是在using() {}
语句中。不要让它们成为字段/属性,确实需要IDisposable等。尽量避免它。
答案 1 :(得分:0)
提交时取决于您,而不是连接器。我认为结束也是具体的;如果您在页面的前3次调用中完成了数据库,为什么要在剩余的处理过程中保持打开状态?
在我看来,这些问题更多地是关于最佳实践,而不是数据库活动和设计。