엔터티 프레임 워크 및 LINQ to SQL 액세스 할 수 있습니다. 내 질문은

이제 VS2008 SP1과 함께 .NET v3.5 SP1이 릴리스되었으므로 이제 .NET 엔터티 프레임 워크에 액세스 할 수 있습니다.

내 질문은 이것입니다. Entity Framework와 LINQ to SQL을 ORM으로 사용하기로 결정할 때 차이점은 무엇입니까?

내가 이해하는 방식으로 Entity Framework (LINQ to Entities와 함께 사용되는 경우)는 LINQ to SQL의 ‘큰 형제’입니까? 이 경우 어떤 장점이 있습니까? LINQ to SQL이 독자적으로 할 수없는 것은 무엇입니까?



답변

LINQ to SQL은 Microsoft SQL Server에서 사용 가능한 데이터베이스 테이블, 뷰, 프로 시저 및 함수의 일대일 매핑 만 지원합니다. 비교적 잘 설계된 SQL Server 데이터베이스에 대한 빠른 데이터 액세스 구성에 사용하는 훌륭한 API입니다. LINQ2SQL은 C # 3.0 및 .Net Framework 3.5와 함께 처음 릴리스되었습니다.

LINQ to Entities (ADO.Net Entity Framework)는 ORM (Object Relational Mapper) API로, 객체 도메인 모델과 다양한 ADO.Net 데이터 공급자와의 관계를 광범위하게 정의 할 수 있습니다. 따라서 다양한 데이터베이스 공급 업체, 응용 프로그램 서버 또는 프로토콜을 혼합하여 다양한 테이블, 소스, 서비스 등으로 구성된 개체의 집계 매시업을 설계 할 수 있습니다. ADO.Net Framework는 .Net Framework 3.5 SP1.

이것은 MSDN에 대한 좋은 입문서입니다.
관계형 데이터에 대한 LINQ 소개


답변

나는 빠르고 더러운 대답은

  • LINQ to SQL은 빠르고 쉬운 방법입니다. 즉, 더 작은 작업을 수행하면 더 빨리 가고 더 빨리 전달할 수 있습니다.
  • Entity Framework는이를 수행 할 수있는 모든 방법을 사용할 수 있습니다. 즉, 더 큰 작업을 수행하는 경우 더 많은 시간이 걸리고 개발 속도가 느리고 유연성이 향상됩니다.

답변

LINQ to SQL이 실제로 죽었습니까? InfoQ.com을위한 Jonathan Allen

Matt Warren은 [LINQ to SQL]을 “존재하지 않은”것으로 설명합니다. 본질적으로, 실제 ORM이 준비 될 때까지 LINQ를 개발하는 데 도움이되는 것은 방치 된 상태였습니다.

Entity Framework의 규모로 인해 .NET 3.5 / Visual Studio 2008 마감일이 누락되었습니다. 불행히도 이름이 “.NET 3.5 서비스 팩 1″인 서비스 팩보다 주요 릴리스와 비슷한시기에 완료되었습니다.

개발자들은 복잡성 때문에 [ADO.NET Entity Framework]를 좋아하지 않습니다.

.NET 4.0부터 LINQ to Entities는 LINQ to 관계형 시나리오에 권장되는 데이터 액세스 솔루션입니다.


답변

@lars 게시 된 기사에는 몇 가지 명백한 차이점이 있지만, 짧은 대답은 다음과 같습니다.

  • L2S는 밀접하게 연결되어 있습니다-특정 데이터베이스 필드에 대한 객체 속성 또는 특정 데이터베이스 스키마에 대한보다 정확한 객체 매핑
  • L2S는 SQL Server에서만 작동합니다 (아는 한)
  • EF를 사용하면 단일 클래스를 여러 테이블에 매핑 할 수 있습니다
  • EF는 MM 관계를 처리합니다
  • EF는 모든 ADO.NET 데이터 공급자를 대상으로 할 수 있습니다

원래 전제는 L2S가 Rapid Development에 대한 것이고 EF는 더 많은 “엔터프라이즈”n-tier 애플리케이션에 대한 것이지만 L2S를 조금 짧게 팔았습니다.


답변

LINQ to SQL

  1. 동종 데이터 소스 : SQL Server
  2. 데이터 구조가 잘 설계된 소규모 프로젝트에만 권장
  3. SqlMetal.exe로 다시 압축하지 않고도 매핑을 변경할 수 있습니다.
  4. .dbml (데이터베이스 마크 업 언어)
  5. 테이블과 클래스 간 일대일 매핑
  6. TPH 상속 지원
  7. 복잡한 유형을 지원하지 않습니다
  8. 스토리지 우선 접근
  9. 데이터베이스의 데이터베이스 중심보기
  10. C # 팀에 의해 생성
  11. 지원되지만 더 이상의 개선은 아닙니다

엔터티 프레임 워크

  1. 이기종 데이터 소스 : 많은 데이터 제공 업체 지원
  2. 다음을 제외한 모든 새 프로젝트에 권장됩니다.
    • 작은 것 (LINQ to SQL)
    • 데이터 소스가 플랫 파일 인 경우 (ADO.NET)
  3. 모델을 설정하고 파일을 매핑 할 때 재 계산없이 매핑을 변경할 수 있습니다. 메타 데이터 아티팩트 프로세스를 출력 디렉토리로 복사
  4. 다음을 포함하는 .edmx (Entity Data Model) :
    • SSDL (스토리지 스키마 정의 언어)
    • CSDL (개념적 스키마 정의 언어)
    • MSL (매핑 사양 언어)
  5. 테이블과 클래스 간 일대일, 일대 다, 다 대일 매핑
  6. 상속을 지원합니다 :
    • TPH (계층 당 테이블)
    • TPT (테이블 당 유형)
    • TPC (콘크리트 클래스 당 테이블)
  7. 복잡한 유형을 지원합니다
  8. 코드 우선, 모델 우선, 스토리지 우선 접근
  9. 데이터베이스의 응용 프로그램 중심보기
  10. SQL Server 팀이 작성
  11. Microsoft Data API의 미래

또한보십시오:


답변

Entity Framework에 대한 나의 경험은 별보다 적습니다. 먼저 EF 기본 클래스를 상속해야하므로 POCO에 작별 인사를하십시오. 디자인은 EF 주위에 있어야합니다. LinqtoSQL을 사용하면 기존 비즈니스 객체를 사용할 수 있습니다. 또한 지연 로딩이 없으므로 직접 구현해야합니다. POCO 및 지연 로딩을 사용하기위한 몇 가지 해결 방법이 있지만 EF가 아직 준비되지 않았기 때문에 IMHO가 존재합니다. 4.0 이후에 다시 올 계획입니다


답변

나는 아주 좋은 답변을 찾을 여기에 간단한 단어에서 무엇을 사용하는 경우 설명 :

사용할 프레임 워크의 기본 원칙은 프리젠 테이션 레이어에서 데이터를 편집하는 방법입니다.

  • Linq-to-Sql- 프레젠테이션 계층에서 데이터의 일대일 관계를 편집하려는 경우이 프레임 워크를 사용하십시오. 하나 이상의 뷰 또는 페이지에서 둘 이상의 테이블의 데이터를 결합 할 계획이 없음을 의미합니다.

  • 엔티티 프레임 워크 -보기 또는 페이지에서 둘 이상의 테이블의 데이터를 결합하려는 경우이 프레임 워크를 사용하십시오. 보다 명확하게하기 위해, 위의 용어는 단순히 표시되는 것이 아니라보기 또는 페이지에서 조작 될 데이터에만 해당됩니다. 이해하는 것이 중요합니다.

Entity Framework를 사용하면 테이블 데이터를 “병합”하여 프리젠 테이션 레이어에 편집 가능한 양식으로 표시 한 다음 해당 양식이 제출되면 EF는 다양한 테이블의 모든 데이터를 업데이트하는 방법을 알게됩니다.

L2S 대신 EF를 선택해야하는 더 정확한 이유가있을 수 있지만 이해하기 가장 쉬운 방법 일 것입니다. L2S는 프리젠 테이션을 위해 데이터를 병합 할 수있는 기능이 없습니다.