我在 ASP.Net 应用程序中使用bltoolkit,我使用存储库模式来管理数据访问层。 对于每个操作,我打开一个新的数据库管理器。 我找不到打开和处置每个请求或会话的 DbManager 对象的方法。任何想法
恕
我直言,最佳使用方式:
public IEnumerable<int> GetMyTableIds()
{
using (var dbManager = new DbManager("database"))
{
return dbManager.GetTable<MyTable>()
.Select(table => table.Id)
.ToArray();
}
}
的呼唤
new DbManager("database")
可以提取到工厂。
或者你可以使用线程静态变量
static class DbManagerContainer
{
[ThreadStatic]
public static DbManager DbManager;
}
public void Request_Start()
{
DbManagerContainer.DbManager = new DbManager("database");
}
public void Request_End()
{
if (DbManagerContainer.DbManager == null)
{
//Write warn to log. This is not normal case.
}
else
{
DbManagerContainer.DbManager.Dispose();
DbManagerContainer.DbManager = null;
}
}