Класс для доступа к БД через Entity Model, как очистить соединение? - PullRequest
0 голосов
/ 18 марта 2010

У меня есть класс, который я использую для обработки всего моего взаимодействия с БД. В основном, когда создается экземпляр этого класса, он создает экземпляр модели, который будет сохраняться до тех пор, пока объект 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, поэтому я должен заставить DataAccess реализовать iDisposeable?

1 Ответ

1 голос
/ 18 марта 2010

Если у вас есть элементы в классе, которые реализуют IDisposable, было бы неплохо сделать так, чтобы ваш класс реализовал их так, чтобы они правильно распаковывались. Если вы не позвоните им после утилизации вашего класса, у вас могут быть некоторые неявные утечки памяти. И, как вы упомянули, легко написать «использование», что вы можете делать только при реализации IDisposable.

Это отличный пример того, как имплантировать IDisosable: http://msdn.microsoft.com/en-us/library/system.idisposable.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...