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

时间:2010-03-18 13:55:36

标签: c# .net entity-framework

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

public class DataAccess
{
    ModelContainer model;

    public DataAccess()
    {
        model = new ModelContainer();
    }

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

我需要在模型上进行哪些清理才能进行预处理?在编写我的单元测试时,我已经忘记了调用我的Close()方法。我喜欢处理DB对象的using(DataAccess data = new DataAccess())方式,就像你在LINQ to SQL中使用的那样,那么我应该让DataAccess实现iDisposeable吗?

1 个答案:

答案 0 :(得分:1)

如果你在类中有实现IDisposable的项目,那么最好让你的类实现,以便它们能够正确处理。如果您在处理课程时没有打电话给他们,那么您可能会遇到一些未解除的内存泄漏。如你所提到的,你可以很容易地编写“使用”,当你实现IDisposable时,你只能这样做。

这是如何实现IDisosable的一个很好的例子: http://msdn.microsoft.com/en-us/library/system.idisposable.aspx