나는 다음을 잠시 썼지 만 최근에 그것을 검토하기 위해 왔으며 이제는 그것이 좋은 디자인이라고 생각하지 않습니다.
디자인은 Entity Framework 4를 사용하는 일종의 모듈 식 데이터베이스 계층을위한 것입니다. 지정된 위치의 외부 라이브러리에서 엔티티 프레임 워크 컨텍스트를 느리게로드하는 단일 데이터베이스 개체가 있으며로드 된 컨텍스트의 인스턴스는에 대한 해시 테이블에 저장됩니다. 그들의 이름 (EG "ContentMgmtContext").
이 시스템에서 데이터베이스와의 모든 접촉은 저장 프로 시저를 통해 이루어집니다. 데이터베이스를 호출하기 위해 쿼리 메소드 서명은 다음과 같습니다.
List<TReturn> Query<TReturn>(string Context,
string Procedure,
TransactionScope Scope,
List<ObjectParameter> QueryParameters)
이 모듈성은 내가 좋아하는 것입니다. 그러나이 방법에는 한 가지 중요한 단점이 있습니다. when using the database layer, the code using it has to have a reference to the library in which the context is stored, in order to access the types returned by the stored procedures through Entity Framework.모델에서 데이터베이스 계층의 개체는보기 및 컨트롤러가 사용하는 새 개체로 변환됩니다.
나는 이것이 나쁜 디자인이라고 생각하지만 어떻게 개선 할 수 있습니까? IStoredProecedureObject저장 프로 시저가 반환하는 모든 데이터 유형에 공통 기본 유형을 제공하는 것과 같은 빈 인터페이스를 추가하는 것을 고려 했지만 Entity Framework에 의해 실패한 것으로 보입니다. .edmx파일을 다시 컴파일 할 때마다 코드가 새로 생성되고 추가 된 내용이 제거됩니다. 이 일을 막을 방법이 있습니까?
이 디자인을 어떻게 개선 할 수 있습니까? 무엇이 잘못 되었습니까? 아니면 내가 올바른 길을 가고 있습니까?