Я полный новичок в 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, как я это делаю? Должен ли он заботиться о своих связях, открывая и закрывая их для каждого запроса?
Или я должен явно распоряжаться им предложением use()?
Спасибо!