문제

을 완전하게 사용하기 위해 LinqToSql 에 ASP.net 3.5 응용 프로그램을 만들 필요 매핑되는 클래스 (일반적으로 수행하여 디자이너에 대 2008).UI 에서 관점,매핑되는 설계의 부분의 데이터베이스하려는 노출을 통해 LinqToSql 고 필수적인 설정에서 ORM 의 특징 LinqToSql.

나의 질문은:나는 설정을 사용하는 프로젝트가 큰 데이터베이스는 모든 테이블은 상호 연결에서 어떤 방법을 통해 외국 키를 사용합니다.내 경사는 하나의 거대한 매핑되는 클래스는 모델의 전체 데이터베이스입니다.을 수 있는 방법은 이론에서(내가 알지 못하는 경우 이 필요한 것이 연습)을 사용하여 외국인 핵심 연결을 통해 생성 LinqToSql 을 쉽게 이동 사이에 관련된 물체에 코드를 삽입 관련됩니다.

그러나 그것을 생각 나는 지금 생각하는 것이 더 효과적일 수 있습을 만드는 여러 매핑되는 클래스,각각에 관련된 특정 네임스페이스는 논리적인 상호 연관된 섹션 내에서 데이터베이스입니다.나의 주요 관심사는 인스턴스화 및 처분을 하나의 거대한 매핑되는 클래스를 모든 시간에 대한 개별 작업과 관련된 특정 지역에 데이터베이스의 것 부과 불필요한 부과 응용 프로그램에 자원입니다.또한,그것은 쉽게 만들고 관리에 매핑되는 작은 파일보다는 하나의 큰 하나입니다.는 것은 내가 잃을 것이 있다는 것이 먼 섹션에서 데이터베이스의하지 않을 것이고 탐색을 통해 LinqToSql(도 체인의 관계를 연결하는 실제 데이터베이스)입니다.또한,할 수 있습니다.테이블는 클래스가 존재하는 것에서 하나 이상의 매핑되는.

어떤 생각이나 경험에는지 여부를 여러 DataContexts(에 해당하는 DB 는 네임스페이스)는 적절한 장소에서의(또는)하나은 매우 큰 매핑되는 클래스(에 해당하는 전체적인 DB)?

도움이 되었습니까?

해결책

에 동의하지 않는 존의 대답이다.이 매핑되는(또는 Linq to Entities ObjectContext)의 더 많은"작업 단위는"이 연결합니다.그것을 관리하는 변화를 추적,등등.이 블로그 포스팅에 대한 설명:

의 수명 LINQ 을 매핑되는 SQL

네 개의 주요 포인트의 이 블로그는 매핑되:

  1. 이상적으로 적합 에 대한"단위는"작업의 접근 방식
  2. 도에 대한 설계 "stateless"서버 작업
  3. 위해 설계되지 않았 수명이 긴 사용
  4. Should be used very carefully after
    any SumbitChanges() operation.
    

을 고려하는 것,제가 생각하지 않을 사용하여 하나 이상의 매핑되는 것에 어떤 해에는 사실을 만들고,다른 DataContexts 의 다른 유형을 위한 작업을 당신의 LinqToSql impelmentation 더납하고 편성했습니다.유일한 단점은 당신이 없을 사용할 수 있 sqlmetal 자동 생성 dmbl.

다른 팁

나는 논쟁은 같은 질문을 하는 동안 복고풍 피팅 LINQ 을 SQL 을 통해 기존 DB.우리의 데이터베이스트의 터무(150 테이블)을 후에는 어떤 생각과 실험 나는 선을 사용하여 여러 DataContexts.지 여부를 고려 anti-패턴 볼 수 남아 있지만,지금 그것은 삶을 관리할 수 있습니다.

내가 생각하는 존 올바른 것입니다.

"내가 주요 관심사는 인스턴스화 및 처분을 하나의 거대한 매핑되는 클래스를 모든 시간에 대한 개별 작업과 관련된 특정 지역에 데이터베이스의 것 부과 불필요한 부과 응용 프로그램에 자원"

당신은 어떻게 지원하는 문장인가요?는 무엇입의 실험을 보여 주는 것이 큰 매핑되는 성능 병목 현상이 발생?여러 datacontexts 이 많이 좋아하는 여러 데이터베이스에서 의미가 비슷한 시나리오,그,럼.으로 작업하는 경우 여러 datacontexts 당신을 추적 할 필요가 있는 객체에 속하는 매핑되는과할 수 없습과 관련이 없는 개체에 동일한 데이터 context.은 비용이 많이 드는 디자인 냄새가 없음을 위해 실제 혜택이다.

@반"이 매핑되는(또는 Linq to Entities ObjectContext)의 더 많은 것이"단위의 작업보다는"연결" 이유는 정확하게 당신이하지 않아야 하나 이상의 매핑되는.왜 당신은 더 많은 것 중 하나는"작업 단위에서"시간입니까?

가 동의하지 않으로 받아들여 대답이다.에서 질문을 제기,이 시스템은 하나의 대형 데이터베이스와 강력한 외국인 핵심 사이의 관계는 거의 모든 테이블(한 경우 나는 작동하).에서 이 시나리오에 파괴,그것으로 작은 DataContexts(DC)에 있는 두 개의 즉각적이고 중요한 단점(두 언급에 의하여 질문):

  1. 을 잃게 사이의 관계를 어떤 테이블이 있습니다. 할 수 있습을 선택하려고 당신의 DC 경계를 현명하게,하지만 당신은 결국 실행하는 상황으로는 것은 매우 사용하기 편리한 관계에서 테이블에 하나 DC 에서 테이블과할 수 없습니다.
  2. 일부 테이블을 표시할 수 있습니다에 여러 DC 습니다. 이것이 의미하기를 원하는 경우 추가 테이블의 특정 helper 방법,비즈니스 논리,또는 다른 코드 부분에서 클래스 형식 호환 되지 않을 통해 DC 습니다.작업할 수 있습니다 이를 상속하여 각각 엔터티 클래스에서 고유의 기본 클래스에 가져오는 지저분하다.또한,스키마를 변경해야 할 것이 중복 여러 DC 습니다.

이제 사람들은 중요한 단점이 있습니다.이 있는 장점을 극복하기에 충분히 큰가?질문을 언급하의 성능:

나의 주요 관심사는 인스턴스화 및 처분을 하나의 거대한 매핑되는 클래스를 모든 시간에 대한 개별하는 작업과 관련 의 특정 지역에 데이터베이스의 것 부과 불필요한 과 응용 프로그램에 자원입니다.

사실,그것은 진실하지 않는 큰 DC 상당히 많은 시간이 걸립니다 인스턴스화하거나 사용하는 일반적인 단위의 작동합니다.사실, 후 첫 번째 인스턴스를 만들어서 실행하는 프로세스,복사 후속의 동 DC 만들 수 있습니다 거의 즉시.

세에서 여러 DC 의 단일,대형 데이터베이스로 철저한 외국인 주요 관계입할 수 있는 분류의 코드입니다.하지만 당신은 이미 이 부분됩니다.

또한,작업 단위의 개념은 정말 관련성이 원래 질문입니다.작업 단위에는 일반적으로 얼마나 많은 일을 하나의 DC 인스턴스 하고 있는지,얼마나 많은 일 DC 클래스 하는 것이기도 합니다.

내 경험에 LINQ SQL 및 LINQ 하는 엔티티에 매핑되는 동의어이하여 데이터베이스에 연결.그래서 만약 당신이 사용한다면 여러 데이터 저장소를 사용하는 것이 필요 여러 DataContexts.내 창자 반응은 당신이 통지하지 않을 것을 많이 느리게 함에 매핑되는 포위하는 큰 숫자의 테이블이 있습니다.았으면 그러나 당신은 항상 수 있는 분할 데이터베이스에서 논리적으로 포인트를 격리할 수 있는 테이블이 없는 관계를 다른 설정의 테이블을 만들고 여러 상황.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top