我有一个我用来处理所有数据库交互的类。基本上,当创建此类的实例时,它会创建模型的实例,该实例将持续存在,直到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吗?
答案 0 :(得分:1)
如果你在类中有实现IDisposable的项目,那么最好让你的类实现,以便它们能够正确处理。如果您在处理课程时没有打电话给他们,那么您可能会遇到一些未解除的内存泄漏。如你所提到的,你可以很容易地编写“使用”,当你实现IDisposable时,你只能这样做。
这是如何实现IDisosable的一个很好的例子: http://msdn.microsoft.com/en-us/library/system.idisposable.aspx