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 и до сих пор не нашел однозначного ответа на этот вопрос.