Bltoolkit Управление DbManager в шаблоне хранилища (ASP.Net)
Я использую bltoolkit в своем приложении ASP.Net, я использую шаблон репозитория для управления уровнем доступа к данным. Операция foreach Я открываю новый DbManager . Я не могу найти способ открыть и удалить объект DbManager для каждого запроса или сеанса. есть идеи
1 ответ
ИМХО, лучший способ использования:
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;
}
}