나는 현재 자동차 딜러 웹 사이트에서 일하고 있으며 데이터베이스에서 'Vehicle'모델로 작업하고 있습니다. 나는 모델, 메이크업, 컬러와 같은 것들에 대한 FK 관계와 룩업 테이블의 광범위한 사용을 만들어 왔습니다 등Linq-to-Sql이있는 조회 테이블
그래서 기본 버전이 될 수있는 일 같은 : 다음 간단한 2 사용
Vehicle {
Id
MakeId
ModelId
ColourId
Price
Year
Odometer
}
ColourId 열과 ColourText 열이 Color와 같은 열 조회 테이블에 저장됩니다. 특이한 것이 없습니다.
이것은 모두 훌륭하지만, 생성 된 Linq-to-SQL 클래스가 룩업 테이블을 사용하기 시작할 때 더 복잡 해지는 것을 발견했습니다. 색상을 얻으려면 이제 Vehicle.Colour.ColourText와 같은 일을해야합니다. 새 차량을 추가하려면 값이 있는지 확인하기 위해 모든 다양한 테이블을 찾아야합니다. 그래서이 애플리케이션 코드의 나머지 부분에이 Linq-to-SQL 모델을 전달하고 싶지는 않습니다.
그래서 현재 접근 방식은이 linq 모델을 거의 동일한 개체 인 순수 도메인 모델로 변환하는 몇 가지 방법을 구현하지만 ID 필드를 실제 텍스트 값 (문자열)으로 바꿉니다. 이것은 모두 저장소에 싸여 있으므로 나머지 응용 프로그램은 데이터 액세스 객체가 아니라 직선 '도메인'객체 만 인식합니다. 응용 프로그램에서 새 레코드를 삽입해야하는 경우이 도메인 모델을 리포지토리에 다시 전달합니다.이 리포지토리는 다시 Linq-SQL 버전으로 변환되어 모든 조회 값이 실제로 유효한지 확인합니다.
괜찮은 생각인가요? 나는이 변환을 조금 더러워한다고 느낀다. 처음에는 Linq-to-SQL을 사용하는 이유 중 하나에 반대하는 것으로 보인다. 다시 말하지만, 앱의 나머지 부분에 룩업 (look-up) 등을 드러내는 객체를 돌아 다니는 것이 더욱 나 빠질 것이라고 생각합니다. 이것이 본격적인 O/RM이 더 널리 쓰이는 이유인가?
L2S보다 도메인 객체를 사용하면 AJAX와 같은 용도로 JSON 직렬화를보다 쉽게 할 수 있습니다.
내가 취한 접근 방식이 합리적인지 궁금한가요? 건배.