【发布时间】:2023-03-20 09:22:02
【问题描述】:
.net:我们的自定义数据访问层类是否应该实现 Idisposable?他们主要使用数据库作为数据存储来存储/检索数据?
谢谢
【问题讨论】:
-
他们是否封装并因此需要处置本身实现
IDisposable的对象?如果是,那么是的。否则,不。
标签: .net data-access-layer idisposable
.net:我们的自定义数据访问层类是否应该实现 Idisposable?他们主要使用数据库作为数据存储来存储/检索数据?
谢谢
【问题讨论】:
IDisposable的对象?如果是,那么是的。否则,不。
标签: .net data-access-layer idisposable
Dispose 主要用于释放非托管资源。例如套接字、与数据库的连接和文件句柄。
如果您自己不跟踪任何非托管资源,则您不需要不需要实现IDisposable,因为当 GC 收集 DbConnection 时,所有资源都会被释放。
我建议你做两件事:
a) 如果您有一个 DbConnection 作为成员变量,请实现 IDisposable 并在 Dispose 方法中释放连接。这仅在您使用 DAL 时使用 using 关键字时才有效。
b) 在任何可能的地方开始使用using,以确保尽快释放资源。
【讨论】: