문제

Conery의 저장고를 검토하면 LINQS 자동 생성 클래스 (IE Order Class)를 사용한 이유를 이해하지 못한 다음 부분 클래스가 아닌 다른 주문 클래스가 있습니다. 저장소 패턴을 사용할 때 클래스를 수동으로 생성하고 DataContext를 완전히 무시해야합니까?

도움이 되었습니까?

해결책

중개 클래스를 사용하여 LINQ 클래스에서 프론트 엔드를 분리하지 않으면 데이터 컨텍스트가 수집 된 데이터 컨텍스트를 제어 할 수 없습니다. 일반적으로 데이터 컨텍스트 유형의 인스턴스 유형을 사용하면 사용하는 즉시 제거하려는 인스턴스를 제거하려고합니다. LINQ에서 SQL 컨텍스트 로이 작업을 수행하는 방법은 다음과 같습니다.

using (MyDataContext data = new MyDataContext())
{
    SomeThing thing = data.Things(t => t.ID == 1);
    return thing;
}
... the MyDataContext instance is gone

"사용"블록을 사용하면 마지막 "}"에서 MyDataconText 인스턴스를 처리합니다. 그러나이 작업을 수행하면 오류가 발생하여 데이터 컨텍스트 인스턴스가 사라 졌기 때문에 "사물"을 사용하려고합니다. 만약 너라면 ~하지 않다 데이터 컨텍스트를 폐기하면 결국 수집 될 때까지 매달려 있습니다.

호출 앱에서 LINQ에서 SQL 코드를 분리하기 위해 중개 클래스를 도입하는 경우 여전히 데이터 컨텍스트 인스턴스를 제거하고 동일한 데이터 (다른 개체에서만)를 반환 할 수 있습니다.

using (MyDataContext data = new MyDataContext())
{
    SomeThing thing = data.Things(t => t.ID == 1);
    SometThingElse otherThing = ConvertSomethingToSomethingElse(thing);
    return otherThing;
}
... the MyDataContext instance is gone

도움이되기를 바랍니다.

다른 팁

Rob은 그의 쇼 중 하나 에서이 질문에 대답했습니다.

그는 POCO 클래스를 사용하여 모든 DataAccess 클래스에서 알 수 있습니다. 예를 들어 LINQ-to-SQL을 변경하여 필터에서 "매핑"을 변경 해야하는 모든 것을 NHibernate로 변경하면 Bussiness 논리를 변경할 필요가 없습니다.

그는 최근 비디오 중 하나에서 LINQ에서 SQL이 매핑하는 방식을 좋아하지 않는다고 말했다. 나는 그것이 완전한 과잉이라고 생각하지만 동의합니다.

저장소 패턴 자체를 고수하는 한 주요 디자인 패턴을 깨뜨리지 않는다고 말하고 싶습니다. 나는 2 세트의 클래스를 갖는 것이 선택의 문제라고 생각합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top