代码之家  ›  专栏  ›  技术社区  ›  jamone

类通过实体模型进行数据库访问,如何清理连接?

  •  0
  • jamone  · 技术社区  · 16 年前

    我有一个用来处理所有数据库交互的类。基本上,当这个类的一个实例被创建时,它会创建一个模型的实例,这个实例将一直持续到dataaccess对象超出范围为止。

    public class DataAccess
    {
        ModelContainer model;
    
        public DataAccess()
        {
            model = new ModelContainer();
        }
    
        public void Close()
        {
            if (model != null)
            {
                model.Connection.Close();
                model.Dispose();
            }
        }
    }
    

    我需要对模型进行哪些清理?我咳嗽得厉害,忘了打电话给我 Close() 方法编写单元测试时。我喜欢 using(DataAccess data = new DataAccess()) 像在linq to sql中那样处理db对象的方法,那么我应该让dataaccess实现idisposeable吗?

    1 回复  |  直到 13 年前
        1
  •  1
  •   Oskar Kjellin    16 年前

    如果类中有实现IDisposable的项,那么最好让类也实现该项,以便正确地处理这些项。如果在处理类时不调用它们,则可能会有一些未被接受的内存泄漏。正如您所提到的,编写“using”很容易,只有在实现idisposable时才能这样做。

    这是一个很好的关于如何嵌入idisosable的示例: http://msdn.microsoft.com/en-us/library/system.idisposable.aspx