Альбахари пишет в "С# 4.0 в двух словах":
<Р → Хотя DataContext/ObjectContext реализует IDisposable, вы можете (в общем) уйти, не удаляя экземпляры. Устранение принудительных связей контекста для утилизации - но это обычно не нужно, поскольку соединения L2S и EF близки автоматически, когда вы заканчиваете получение результатов запроса & Л; <
Это кажется неправильным, и FxCop также жалуется, если вы не занимаетесь тем, что является IDisposable.
У меня есть следующий код репозитория:
    public abstract class Repository<TEntity> : IRepository<TEntity> where TEntity : class
    { ...
        public void Add(TEntity entity)
    {
        using (var dbContext = this.UnityContainer.Resolve<DbContext>())
        {
            dbContext.Set<TEntity>().Add(entity);
            dbContext.SaveChanges();
        }
    }
    ...
    public virtual IEnumerable<TEntity> Find(Expression<Func<TEntity, bool>> expression)
    {
       using (var dbContext = this.UnityContainer.Resolve<DbContext>())
       {
           return dbContext.Set<TEntity>().Where(expression).ToList().AsEnumerable();
       }
    }
    ...
Примечание. Я не возвращаю IQueryable - ленивая загрузка не должна играть роли. Resolve DbContext настроен как PerResolveLifetimeManager.
Является ли этот подход ОК или мне нужно пересмотреть это на основе описания Albaharis?