Bltoolkit以存储库模式管理DbManager(ASP.Net)

时间:2013-11-09 13:03:25

标签: asp.net repository-pattern bltoolkit

我在ASP.Net应用程序中使用bltoolkit,我使用存储库模式来管理我的数据访问层。 foreach操作我打开一个新的DbManager。我无法找到每个请求或会话打开和处理DbManager对象的方法。任何想法

1 个答案:

答案 0 :(得分:0)

恕我直言,最好的使用方式:

    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;
   }
}