전 Entity Framework 및 ASP.Net MVC의 초보자입니다. (.Net 2.0, ADO.Net 및 WebForms에 대한 경험이 있습니다.)Entity Framework - "엔터티"개체를 인스턴스화하는 방법
내 현재의 의심은 내 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() 절을 사용하여 명시 적으로 삭제해야합니까?
감사합니다.
좋습니다. 질문은 ... 잘못하고 있습니까? 정말 엔티티 객체를 처리해야합니까? 내가하지 않으면 어떻게됩니까? SQL Server에 연결이 새어 나옵니까? –
ObjectContext.Dispose가 많이 수행하지 않습니다 (Reflector 참조). 그러나 그것이 변할 수 있다고 가정하는 것은 합리적입니다. 당신은 그것을 처분해야합니다. –