我正在研究一个工作单元,我很好奇应该如何处理连接。我的存储库采用一个工作单元,并将该连接用于 Get() 命令。
显然,Commit() 将处理所有的添加、更新和删除。这将打开连接并开始事务并在完成后关闭。Gets应该如何处理?
UOW 是否应该在构造函数中打开连接并在完全完成后关闭?这意味着当我将 UOW 从仓库传递到仓库时,连接是打开的。或者我应该只在需要时打开和关闭它?
方法#1:工作单元打开连接并且连接保持打开直到处理完成?
public UnitOfWork(IDbConnection connection)
{
Connection = connection;
Connection.Open();
Transaction = Connection.BeginTransaction();
}
方法 #2:Get 方法的片段,在读取之前打开并在之后立即关闭。如果传递给多个存储库,则使用相同的连接,只是打开和关闭一堆。
using (var reader = manager.GetReader())
{
UOW.Connection.Open();
while (reader.Read())
list.Add(factory.CreateTFromReader(reader));
UOW.Connection.Close();
}