2010-02-14 2 views
4

현재 Pro Asp.Net MVC를 읽고 있는데, 모든 linq2sql 엔티티 클래스를 직접 작성하고 linq 매핑 특성으로 매핑합니다. 그러나, 내가 본 (구글 검색에서) linq 2 sql에 대한 이야기는 모든 엔티티를 구축하기위한 비주얼 디자이너를 사용하는 것 같습니다. 어느 것이 L2 엔티티를 구축하기 위해 선호되는 방법이며 각각의 장점/단점은 무엇입니까?linq2sql 쿼리에 dbml을 사용할 때의 장점이나 단점은 무엇입니까?

시각적 디자이너를 사용할 때 상속 매핑을 수행 할 수없는 유일한 차이점이 있습니다. MSDN에서는 VS 2010 인터페이스에서이 기능을 놓칠 수 있다고합니다. 그러나 어쨌든 서브 테이블 데이터가 필요하지 않을 때 기술적으로 추가 조인을 추가 할 수 있으므로 상속을 사용해야한다고 확신하지는 못합니다.

PS로 l2s는 내 스키마를 수정하지 않으므로 스키마 변경을 수동으로 생성 한 다음 linq2sql에서 복제합니다.

감사합니다.

답변

2

우리는 항상 디자이너를 사용했습니다. 디자이너에게 테이블을 다시 가져와야하는 스키마를 변경할 때마다 실제로 추가 단계가 도입됩니다.하지만 desginer를 우회하는 경우 작성해야하는 코드 양과 비교해 볼 때 effrot은 비효율적이라고 생각합니다.

또한 디자이너가 부분 클래스를 생성하므로 추가 구현 세부 정보가 포함 된 부분 클래스에 대한 추가 파일을 만들 수 있습니다. 디자이너가 테이블을 다시 만들면 추가 코드 만 남게됩니다. 우리는 클래스에 많은 헬퍼 함수를 ​​추가하고 원시 정수 FK 필드를 오버레이하는 엄격하게 유형화 된 열거 형 속성을 제공하기 위해이 작업을 수행합니다.

상속을 잘 수행하는 것이 매우 어렵다는 것은 사실이지만 데이터 계층이 필요한 경우 L2S가 최상의 솔루션이 아닐 수도 있습니다. 필자는 데이터 계층을 깨끗하고 단순하게 유지하는 것을 선호합니다. L2S를 사용하여 데이터를 입출력 한 다음 비즈니스 계층에서 더 복잡한 논리를 푸는 것을 선호합니다. 데이터 계층에서 객체 상속과 같은 일을 정말로해야한다면 EF와 같은보다 진보되고 복잡한 기술을 탐구 할 것입니다

1

우리는 L2S를 사용하여 전체 애플리케이션 프레임 워크 백엔드를 구축했습니다. 나는 이것의 대부분을 개발했다. DBML 디자이너를 사용하기 시작했지만 이것이 곧 왕실의 고통이라는 것을 깨달았습니다. 모든 스키마를 변경하려면 디자이너의 테이블을 변경해야했습니다. 또한 디자이너가 만든 엔티티는 모두 하나의 클래스 파일에 저장되어 있으며 M2M 관계 지원 등 원하는 모든 기능을 갖추고 있지 않습니다. 그래서, 나는 더 나은 길을 원한다는 것을 깨닫기 오래 걸리지 않았다.

내가 원하는 방식으로 L2S 엔티티를 생성하는 자체 코드 생성기를 작성했으며 응용 프로그램 계층에서 사용되는 "가벼운"엔티티 집합도 생성합니다. 이것들은 L2S 배관이 없습니다. 코드 생성기는 대상 데이터베이스에서 직접 이러한 모든 엔터티 및 기타 코드를 만듭니다. 더 이상의 DBML!

이것은 우리에게 매우 효과적이었으며 엔티티는 우리가 원하는 방식대로 데이터베이스 스키마가 변경 될 때마다 자동으로 생성되었습니다.

관련 문제