EF (Entity Framework) использование «использования» оператора

У меня есть проект на MVC. Мы выбрали EF для наших транзакций с БД. Мы создали несколько менеджеров для слоя BLL. Я нашел много примеров, где "using"заявление используется, т.е.

public Item GetItem(long itemId)
    {
        using (var db = new MyEntities())
        {
            return db.Items.Where(it => it.ItemId == itemId && !it.IsDeleted).FirstOrDefault();
        }
    }

Здесь мы создаем новый экземпляр DBcontextMyEntities(), Мы используемusing" для того, чтобыmsgstr "обеспечить правильное использование IDisposable объектов."

Это только один метод в моем менеджере. Но у меня их больше десяти. Каждый раз, когда я вызываю любой метод из менеджера, я буду использоватьusing"Statemant и создать еще один DBcontext в памяти. Когда сборщик мусора (GC) будет располагать их? Кто знает?

Но есть и другая альтернатива использования методов менеджера. Мы создаем глобальную переменную:

private readonly MyEntities db = new MyEntities();

и использовать DBcontext в каждом методе безusing"оператор. И метод выглядит так:

public Item GetItem(long itemId)
{
    return db.Items.Where(it => it.ItemId == itemId && !it.IsDeleted).FirstOrDefault();
}

Вопросов:

Как правильно использовать переменную DBcontext?Что делать, если мы не будем использовать "usageзаявление (потому что это влияет на производительность) - GC сделает все для этого?

Я "новичок" в использовании EF и до сих пор не нашел однозначного ответа на этот вопрос.

Ответы на вопрос(2)

Ваш ответ на вопрос