Я абсолютный новичок в Entity Framework и ASP.Net MVC, я учился в основном из учебных пособий, не имея глубокого понимания ни того, ни другого. (У меня есть опыт работы с .Net 2.0, ADO.Net и WebForms)
Мои нынешние сомнения связаны с тем, как я создаю экземпляры объектов Entities.
В основном я делаю это в своих контроллерах:
public class PostsController : Controller {
private NorthWindEntities db = new NorthWindEntities();
public ActionResult Index() {
// Use the db object here, never explicitly Close/Dispose it
}
}
Я делаю это так, потому что нашел это в каком-то блоге MSDN, который показался мне достаточно авторитетным, и я предположил, что это правильный путь.
Тем не менее, я чувствую себя довольно непросто по этому поводу. Хотя это экономит мне много кода, я привык делать:
using (NorthWindEntities db = new NorthWindEntities() {
}
В каждом отдельном методе, для которого требуется соединение, и если этот метод вызывает других, которым это необходимо, он передает им в качестве параметра db. Вот как я все делал с объектами подключения до того, как появился Linq-to-SQL.
Другая вещь, которая делает меня неловкой, это то, что NorthWindEntities реализует IDisposable, что по соглашению означает, что я должен вызывать его метод Dispose (), а я нет.
Что вы думаете об этом?
Это правильно, чтобы экземпляр объекта Entities, как я делаю? Должен ли он заботиться о своих соединениях, открывая и закрывая их для каждого запроса?
Или я должен явно избавиться от него с помощью оператора using ()?
Спасибо!