使用企业库在数据访问层中发生内存泄漏

时间:2014-10-31 11:18:55

标签: c# asp.net memory-management memory-leaks enterprise-library

namespace DAL
{
    public class DatabaseService
    {
        Database dal;
        string query;
        DataSet ds = new DataSet();
        DbCommand cmd;
        public DateTime GetCurrentDateTime()
        {
            dal = DatabaseFactory.CreateDatabase("ConnStr");
            query = "uspStoreProdure1";
            cmd = dal.GetStoredProcCommand(query);
            return Convert.ToDateTime(dal.ExecuteDataSet(cmd).Tables[0].Rows[0]["CurrentDateTime"]);
        }

        public DateTime GetCurrentDateTime1()
        {
            dal = DatabaseFactory.CreateDatabase("ConnStr");
            query = "uspStoreProdure2";
            cmd = dal.GetStoredProcCommand(query);
            ds = dal.ExecuteDataSet(cmd);
           return Convert.ToInt32(ds.Tables[0].Rows[0][0].ToString());
        }
    // n number of method 
}

1 个答案:

答案 0 :(得分:0)

遗漏了真正的问题,但可能是以下内容:

  • DBFactory.CreateDabase值应该放在最后。
  • 此外,您通过将引用保留在您的类中来保持最后一个值。为什么" dal,query,ds和cmd"班上的一些领域?每次运行查询时它们都不同。在方法中本地声明它们。
  • 如果您同时调用DatabaseService两次,您将会有一些奇怪的行为......