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;
   }
}
Другие вопросы по тегам