2013-07-19 3 views
1

ASP .Net 웹 사이트를 만들고 있는데 데이터 계층에 Linq to SQL 클래스를 사용하고 데이터 계층을 서비스 할 다른 프로젝트가 필요합니다. 임 Linq SQL에 상당히 새로운.Linq to SQL DataContext 사용

내가 가지고있는 구조는 별도의 인터페이스에서 데이터베이스의 각 테이블에 필요한 모든 CRUD (작성, 읽기, 업데이트 및 삭제) 작업을 나열하는 인터페이스입니다.

그때, 인터페이스 내가 내 모든 코드를 얻기 위해 쓰기이었다 구현하는 다른 클래스, 업데이트가 데이터를 삭제

등 즉 내가 항상 모든 새로운 StoreDataContext으로 희미한 서비스를 작성 하였다 눈치 무엇

Public Function GetCustomers As Iqueryable(of Customer) 
Dim Service as New StoreDataContext 
Return From c in Service.Customers select c 
End Function 

내 데이터로 무엇이든 할 수있는 나의 방법.

이렇게하면 datacontext로 속성을 초기화하는 각 클래스에서 속성을 생각하고 만들 수있게되었습니다. 한 단계 더 가서 내가 모든 클래스 다음이 클래스를 상속 할 있도록 경우 MustInherit 클래스를 만들 생각하고 변경 오히려 모든 클래스

Public MustInherit Class MyService 

    Public ReadOnly Property CurrentDataContext As StoreDataContext 
     Get 
      Return New StoreDataContext 
     End Get 
    End Property 

End Class 

내 고객에가는 것보다 한 단계에서 할 수 할 필요합니다 클래스는 다음과 같이 보일 것입니다

위의 함수가 생성 된 클래스에서 상속되는 CurrentDataContext를 사용하고 있음을 알 수 있습니다.

질문 :

  1. 이 확인 아니면이 디자인에 약간의 결함이있을 것인가?
  2. 어떤 단계에서든 수업 중에이 서비스를 종료해야합니까? 당신은 변화가 발생 제출하면 확인 원하기 때문에

감사

답변

1

는 새 데이터 컨텍스트 매번 작성해야합니다. 이것은 Unit Of Work이라는 소프트웨어 엔지니어링 패턴을 따르며, 여기서 컨텍스트를 열고 엔티티 트리에 많은 작업을 수행 한 다음 제출을 누릅니다. 모든 것을 하나의 방법으로 수행하여 미래에 어떤 일이 일어나고 있는지 이해하는 것이 좋고 분명한 것입니다.

작성을 특성으로 이동하면 제출 변경 사항이 영향을 미치는 위치가 명확하지 않습니다. 한 가지 방법으로 열 수 있고, 다른 방법으로 일부 변경하고, 세 번째로 변경 내용을 제출 한 다음 다른 방법으로 변경 내용을 제출하여 검색하기가 어려울 수 있습니다.

나는 이것이 상용구처럼 보이고, DRY가 아니지만 자신을 반복하지는 않지만 여전히 좋은 프로그래밍 습관이라고 알고있다.

Submit Changes (변경 사항 제출) 사용에 대한 자세한 설명은 Scott Guthrie입니다.

+0

감사합니다. 지금 게시 된 링크를 살펴 보겠습니다. 그냥 당신을 정확하게 이해했는지, 내가 가진 것이 좋다는 것을 말하고, ive가 제안한 것 또는 제안한 디자인이 좋다고 말하면서 계속 진행하고 있습니까? 그러나 내가 만든 클래스에 기타를 삽입하기 위해 보일러 플레이트가 더 필요합니까? 많은 감사 – Computer

+1

가지고 계신 것을 가지고 계속하십시오. 각 함수의 시작 부분에 새로운 DataStoreContext를 희미하게하십시오. 읽기 (선택)를 할 때 문제가 적지 만 객체를 업데이트 할 때 새로운 컨텍스트, 객체 업데이트, 모든 변경 사항 제출 등의 좋은 프로세스가 필요합니다. –

+0

죄송합니다. 또 다른 빠른 생각입니다. 내 속성은 새 인스턴스를 만듭니다. 즉, 해당 메서드를 호출 할 때마다 각 메서드마다 새 인스턴스를 만들지는 않습니까? 그러므로 그것은 매번 새로운 맥락을 가지고 있습니까? 고마워요 – Computer