Должен ли я использовать EF4.0 ObjectContexts? - PullRequest
1 голос
/ 18 апреля 2011

У меня есть простой шаблон UnitOfWork, работающий с Entity Framework 4, например:

public class UnitOfWork
{
    private readonly myEntities _context;

    public UnitOfWork()
    {
        _context = new myEntities();
    }

    public myEntities Context { get { return _context; } }

    public void SaveChanges()
    {
        _context.SaveChanges();
    }

    public void Finish()
    {
        _context.Dispose();
    }
}

У меня такой вопрос: нужен ли мне метод Finish? Нужно ли явно вызывать Dispose для моего ObjectContext -объектного объекта-сущности, или я должен просто позволить сборщику мусора позаботиться об этом?

1 Ответ

4 голосов
/ 18 апреля 2011

Поскольку контекст EF является одноразовым и по своей сути представляет соединение с базой данных, вы должны Dispose() его.

Чтобы немного облегчить жизнь потребителям вашего UnitOfWork класса, я бы заставил его реализовать IDisposable, а не предлагать метод Finish().Таким образом, его можно использовать в блоке using.

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