2010-04-06 4 views
1

물론 테이블을 기반으로 자동 생성 클래스가 들어있는 .dbml 파일이 있습니다.LINQ 클래스를 다른 네임 스페이스의 자체 부분 클래스로 확장합니까?

그러나 내 자신의 클래스로 확장하고 싶습니다. 일반적으로 필자는 각 테이블이 각각의 관련 DAO 및 서비스 클래스가 포함 된 자체 폴더에서 고유 한 네임 스페이스를 갖도록 설계합니다. 예를 들어 '고객'과 관련이있는 페이지를 다루는 경우 customerNS 만 포함 할 수 있습니다.

하지만 LINQ를 사용하면이 작업을 수행 할 수없는 것 같습니다. 프로젝트에서 기본 네임 스페이스를 제거하려고 시도했지만 .dbml 파일을 사용자 지정 네임 스페이스가있는 폴더에 넣은 다음 'using'문을 추가했지만 아무 것도 작동하지 않습니다.

또한 .dbml 파일과 관련된 Entity 네임 스페이스, 컨텍스트 네임 스페이스 및 사용자 지정 도구 네임 스페이스 속성을 보았고 이러한 모든 이름을 x로 설정하고 다른 클래스에서 'x'를 사용하여 부분 클래스를 확장 할 수있었습니다. , 그러나 그것은 단지 작동하지 않습니다.

이것이 가능합니까 아니면 모든 확장 부분 클래스를 .dbml 파일과 동일한 네임 스페이스에 보관해야합니까?

답변

0

형식에 관계가없는 경우 대답은 간단합니다. 여러 dmbl 파일을 사용하십시오. 관계가 필요하고 여러 네임 스페이스를 읽으려는 경우도 있습니다.

T4 템플릿 파일로이 작업을 수행 할 수도 있습니다. VS2010에는 템플리트가 생성됩니다 (생성자 템플리트라고 부릅니다). VS2008에 대해 하나를 찾을 수 있습니다 on codeplex

표준 템플릿을 변경해야하는 이유는 관련 속성이 다른 네임 스페이스에 있기 때문에 모든 속성이 정규화 된 이름을 사용해야한다는 것입니다. 그리고 대부분의 제어를 위해 생성 된 클래스에서 네임 스페이스 정보를 건너 뛸 수 있습니다 (따라서 부분 클래스에서 정의 할 수 있음).

+0

디자이너보기에서 .dbml을 열 때 엔터티 네임 스페이스 속성이 무엇인지 궁금한가요? "생성 된 엔티티 클래스의 네임 스페이스를 지정합니다." 그것은 내가 원하는 것을 할 수있는 것처럼 보이지만 그것은 어떤 것에도 영향을 미치지 않는 것 같습니다. – SventoryMang

+0

@ sah302 : 모든 엔티티 클래스의 네임 스페이스는 각 네임 스페이스가 아닙니다. @Sander Rijken : T4 - 잘 잡으십시오. 물론 도움이 될 수 있습니다. 그러나 특정 상황에서는 클래스를 네임 스페이스 내에 배치하기위한 다른 전략을 고려해야한다고 제안합니다. – vittore

+0

네, 고마워요. 그런 식으로 작동하도록 만들었지 만 여전히 한 네임 스페이스로 제한되어 있습니다. 답장을 보내 주셔서 감사합니다. – SventoryMang

0

모든 linq 클래스를 하나의 네임 스페이스에 보관해야합니다. 왜 DO 클래스를 다른 네임 스페이스에 넣으려고합니까?

+0

LINQ 's는 시간을 절약하는 클래스를 생성하지만 프로젝트를 구성하는 방식이 아닙니다. 내가 말했듯이 나는 보통 SOA 접근법을 사용하여 네임 스페이스 당 하나의 객체를 가진다. 각 네임 스페이스에는 DAO 및 서비스 클래스뿐만 아니라 각각의 개체 클래스가 있습니다. 그런 다음 프론트 엔드에서 하나 또는 두 개의 테이블 만 처리하는 페이지에서 (객체와 상관 관계가 있음), 필자는 해당 페이지를 사용합니다. 내 인텔리 센스는 복잡하지 않으며 더 효과적입니다. – SventoryMang

+0

나는 그것이 매우 편리하지 않다고 생각한다. 차라리 DAL.DataObjects 네임 스페이스, DAL.DataManager 네임 스페이스 등을 가질 것이다. 그러나 아마 그것은 맛을 선택합니다. 그러나 서비스가 아닌 하나의 네임 스페이스와 별도의 어셈블리에 모든 DO 객체가 있으면이 어셈블리를 N 계층 응용 프로그램의 다른 계층에서 참조 할 수 있습니다. 예를 들어,'DAL'과'BLL' 어셈블리가 참조하는'DO' 어셈블리를 생각해보십시오. – vittore

+0

흥미로운 점은 당신이 가져 오는 흥미로운 점입니다. 당신의 답변에 감사드립니다. – SventoryMang