2009-03-10 2 views
3

저는 LINQ to SQL을 실험하기 시작했습니다. 기본적으로 LINQ 매핑 데코레이터를 사용하여 클래스를 생성하고 있습니다. 따라서 db 테이블 스키마의 어느 부분을 내 클래스에 통합할지 선택하게됩니다.LINQ to SQL을 사용하는 것처럼 Entity Framework를 사용할 수 있습니까?

간단한 예 : 내가 사용하지 않는 및 제약 조건을 프로젝트에 의한 모델링 도구에 의존하려하지 생각하고

private DateTime? _LocalCopyTimestamp = (DateTime)SqlDateTime.MinValue; 
[Column(Name = "recaLocalCopyTimestamp", Storage = "_LocalCopyTimestamp", CanBeNull = true)] 
public DateTime? LocalCopyTimestamp 
{ 
    get 
    { 
     return this._LocalCopyTimestamp; 
    } 
    set 
    { 
     this._LocalCopyTimestamp = value; 
    } 
} 

는 (방법 스키마 변경이 처리되며이 기존의 데이터베이스 스키마이며 때문이다 너무 유기적이며 조금 엄격함)

스키마 정보 파일 및/또는 많은 고유 코드 파일을 포함하지 않아도 Entity Framework에서 이러한 유연성을 얻을 수 있습니까?

둘 이상의 기본 테이블을 "사용"하는 클래스를 만들 수도 있습니까?

누구나 관련 문서를 알려줄 수 있습니까?

답변

8

요청한 기능 (C# 클래스 작성 및 모델 생성)은 Entity Framework 팀 "Model First"에 의해 지정됩니다. 현재 Entity Framework의 현재 버전에는 존재하지 않지만 다음 버전에서는 계획된 기능입니다. Entity Framework talks from PDC을 보면이 새로운 기능의 데모를 볼 수 있습니다. 현재 버전에서는 "많은"매핑 파일을 작성할 필요는 없지만 하나만 필요합니다 (EDMX 파일). XML이어야합니다.

예, 둘 이상의 기본 테이블을 사용하는 엔티티 클래스를 생성 할 수 있습니다. 이를 "Entity splitting"이라고합니다. 링크에서 단계별 지침. 일반적으로 Entity Framework는 LINQ to SQL보다 훨씬 복잡한 매핑 시나리오를 지원합니다.

저는 디자이너를 사용하지 않고 EDMX를 쓰는 것에 대해 Marc이 완전히 동의하지 않아야한다고 두려워합니다. 디자이너를 사용하지 않고 EDMX를 작성하는 것은 가능할뿐만 아니라 특정 측면을 초과하는 프로젝트의 경우 불가피합니다. 이에 대한 몇 가지 포인트 :

초기 역사의 대부분을
  1. (사전 RTM, "ObjectSpaces") 엔티티 프레임 워크, 수동으로 XML 파일을 작성하는 도구를 사용할 수있는 유일한 방법이었다. 디자이너는 최근 기능으로 Entity Framework 자체보다 상당히 안정적이지 않습니다.
  2. 디자이너에서 전혀 지원되지 않는 복잡한 형식과 같은 특정 Entity Framework 기능이 있습니다.
  3. 레거시 데이터베이스에 필요할 수있는 개별 열을 매핑하지 않거나 외래 키 관계가없는 매핑 테이블과 같은 특정 매핑 시나리오는 디자이너에서 지원되지 않습니다.
  4. (1)에서 언급했듯이 디자이너는 Entity Framework 자체보다 상당히 버그가 많습니다. 따라서 대규모 프로젝트의 경우 디자이너의 실수로 정리해야 할 것입니다.
+0

멋진 답변, 당신이 말한대로, 다음 버전을 기다리는 것이 가장 좋습니다. – leppie

+0

디자이너의 포인트가 모두 표시됩니다. 나도 leppie와 동의한다 : 나는 다음 버전을 기다리고있다 .-p MVP Summit에서 하루를 보냈다 - 현재의 화신보다 훨씬 좋게 보인다. –

+0

"Entity Framework의 대부분의 역사에 대해 ... 음, RTM 기록의 경우 둘 다 동일한 연령을가집니다. –

1

Entity Framework는 EDM을 사용하여 데이터를 모델링합니다. 이것은 3 개의 복잡한 스키마 파일 세트 (저장소, 개념, 매핑)로, 가장 일반적으로 프로젝트에 리소스로 저장됩니다 (단일 EDMX 파일을 사용하여 3 개의 모든 스키마 파일을 생성하는 디자이너를 통해).

이 정보에 대한 특성이 부여 된 클래스는 지원하지 않습니다. EDM을 작성하는 유일한 방법은 설계자 (본질적으로 싫어하는 모델링 도구)를 사용하는 것입니다.

Re 클래스는 하나 이상의 기본 테이블을 "사용"합니다. 예, 개념적 레이어 (즉, 클래스)에있는 단일 Entity Framework 엔터티는 여러 저장소 테이블에 걸쳐있을 수 있습니다. 이는 일부 상속 예제에 특히 유용하지만 평면 모델에서도 (IIRC)를 사용할 수 있습니다. 이 작업은 저장소와 개념적 계층 사이의 "매핑"을 통해 수행됩니다 (가장 일반적으로는 디자이너의 탭에서 수행).

관련 문제