엔터티 프레임 워크 및 LINQ to SQL


828

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

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

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


138
EF가 출시 된 이후 오랜 시간이 걸리므로 아래 답변을 다시 검토해야하므로 여기에 오는 새로운 개발자가 잘못된 인상을받을 수 있습니다. EF는 초기 릴리스 이후 GREAT and EASY 도구가되었습니다. DB 연결을 설정하면 필요한 것의 90 % 정도입니다. 경험있는 관점에서 매우 빠른 개발! LINQ는 가장 친한 친구입니다. 그것은 매우 사용자 정의가 가능하고 MVC는 그것을 좋아하며 나쁜 말을하는 사람들에게 그것을 사용합니다. 먼저 그것을 사용하는 방법을 배우십시오 (그리고 LINQ를 유지하십시오)!
graumanoz

10
그렇기 때문에 MSFT는 EF를 위해 LINQ2SQL을 효과적으로 죽였습니다. 그러나 MSFT 오픈 소스 EF가 더 빨라지고 확실히 향상되고 있다는 사실. 그러나 EF에 들어가는 사람은 EF에 여전히 많은 단점이 있음을 이해해야합니다. - 나는 일에 대해 게시 한 stackoverflow.com/questions/305092/...
nikib3ro

4
@ kape123, (a) LINQ to SQL은 "죽음"이 아닙니다. 여전히 사용할 수 있습니다. (b) LINQ to SQL은 Windows Phone 8 개발의 표준 데이터 액세스 방법입니다.
Ryan Lundy

9
@ user3308043, [인용 필요].
Ryan Lundy

3
@Kyralessa-2010 년 현재 (내가 찾은 가장 최근 인용 인 .NET4.0의 출시와 함께) MS는 LINQ2SQL에 일부 투자가 이루어질 수 있지만 "우리의 전체 투자의 대부분은 엔터티에있을 것"이라고 인정했습니다. 뼈대."
kmote

답변:


483

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을 사용하여 EF에서 쿼리하는 것처럼 보입니다
PositiveGuy

11
@CoffeeAddict는 LINQ 람다를 사용하는 스타일이 매우 유사하지만 각 API는 완전히 다른 토대를 가지고 있습니다. 예를 들어 LINQ2SQL이 SQL 쿼리를 생성하는 방식은 SQL 함수를 사용할 수있는 반면 L2E는 2008 년을 기준으로하지 않았거나 적어도 2008 년에는 그렇지 않았습니다.
Kris

2
EF 객체 지향 접근 방식은 사용이 매우 쉽고 편리하며, 매우 빠르고 관리가 가능한 코딩이 가능합니다. 나를 위해, 데이터에 액세스하는 가장 좋은 방법입니다.
앙투안 펠티에

10
이 답변은 더 이상 사용되지 않습니다. SQL에 이제 Linq에이 one2many 매핑을 지원
조지 Lanetz에게

201

나는 빠르고 더러운 대답은

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

32
또한 EF에서와 동일한 작업을 수행하기 위해 L2S로 더 적은 코드 줄을 작성하는 경향이 있습니다. EF에 게으른 로딩이 없다는 것은 무언가가로드되었는지 항상 확인하고 있음을 의미합니다.
Paul Mendoza

브래드, 전자 상거래 사이트에 대해 어떻게 제안 하시겠습니까? 내가 ... 내가 거기에가는 간단한 CRUDs 이외의 아무것도 볼 수없는 것은
PositiveGuy

2
@CoffeeAddict, 가장 많이 투표 된 답변 중 3 위는 간단한 CRUD에 대한 L2S를 말합니다
IsmailS

11
@Banford .NET 4.0의 EF를 사용하면 L2S보다 낫다고 생각합니다. L2S가 3.5에서 EF에서 누락 된 기능은 .NET 4.0에서 EF에 추가되었습니다. .NET 4.0의 EF에있는 LINQ 문은 L2S의 문과 거의 동일하게 보입니다. EF는 L2S가 제공하는 것 외에 지금 할 수있는 몇 가지 추가 작업을 제공합니다.
Paul Mendoza

40
이 답변은 이제 5 살이며 상당히 구식입니다. Entity Framework 6은 현재 베타 버전이며 게으른 로딩, 열거 지원 등을 포함하여 훨씬 개선되었습니다.
Tim

109

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 관계형 시나리오에 권장되는 데이터 액세스 솔루션입니다.


56
사실, 우리는 EF를 좋아하지 않습니다. 디자이너가 열악하고 매우 극도로 버그 가 많기 때문 입니다. 나는 그것이 그렇게 복잡하다는 것을 결코 발견하지 못했습니다.
BlueRaja-대니 Pflughoeft

12
주요 전자 상거래 사이트는 LINQ to SQL을 사용합니다. 예 : Redbox, Stackoverflow 등
PositiveGuy

14
나는 LINQ to SQL을 사용하는 많은 훌륭한 개발자를 알고 있으며이 기사가 완전히 과장되었다고 말합니다. 동의한다. LINQ to SQL은 강력한 .com에서 사용되고 있으며 여전히 사용됩니다.
PositiveGuy

4
그러나 L2EF 쿼리의 정수 속성에서 .ToString ()을 호출해도 예외가 발생하지 않아야합니다.
StingyJack

3
@ BlueRaja-DannyPflughoeft 5 년이 지난 후에도 여전히 사실입니까?
Vikas Rana

94

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

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

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


13
"L2S는 SQL Server에서만 작동합니다"(필자는 아는 한) 업데이트해야합니다. 오픈 소스 프로젝트 "dblinq"는 LINQ to SQL 어셈블리를 MySQL, PostgreSQL, Ingres, Firebird, SQLite와 통신 할 수있는 것으로 교체합니다. .. 및 Microsoft SQL (물론).
Contango

1
기다려 ... 그래서 EF가 밀접하게 연결된 DL 객체를 만들지 않습니까?
PositiveGuy

7
즉, L2S가 엔터프라이즈 지원 솔루션이 아니라는 원래 전제는 더 이상 사실이 아닙니다. StackOverflow는 L2S와 Redbox와 같은 다른 많은 .com에서 실행됩니다.
PositiveGuy

74

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의 미래

또한보십시오:


6
가장 최신의 자세한 답변입니다.
ErTR

2
Entity Framework 는 ?를 작성할 때 LINQ to SQL을 사용 하지 dbSet<Orders>.Where()...ToList()않습니까? LINQ에서 SQL로 Entity Framework를 반대하는 것이 오해의 소지가 있다고 생각합니다.
Don Cheadle

4
@mmcrae EF는 L2S를 사용 하지 않으며 둘 다 기본 데이터베이스에 대한 linq 제공 업체입니다. linq-to-a-database 및 linq-to-xml과 비슷한 Linq-to-a-database로 해석하면 linq-to-a-database에서 모두 비슷합니다. 그러나 EF는 L2S를 사용하지 않습니다 (또는 그 반대). 완전히 분리 된 두 개의 도구.
Maarten

4
"작은 프로젝트를 제외한 모든 새 프로젝트에 권장" 나는 동의하지 않습니다. Code First는 소규모 프로젝트를 수행 할 수있는 매우 빠른 방법입니다. 그 외에도이 질문에 대한 훌륭한 업데이트.
DrewJordan 2016 년

51

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


7
POCO 지원 부족은 Entity Framework에서 LINQ to SQL을 선택한 가장 큰 이유입니다. 그들이 약속 한 다음 버전에 EF가 포함되면 다시 방문 할 수 있습니다. EF를 위해 POCO를 수행하는 추가 프로젝트가 있지만 충분하지 않습니다.
Joseph Ferris

27
누군가 (나 같은) POCO가 무엇을 의미하는지 모르는 경우 : Plain Old CLR Object
CBono

4
나는 POCO를 지원하지 않는 것에 대한 큰 소란이 무엇인지 알지 못합니다 ... 그것은 추상화 레벨의 한 단계 더 있습니다. 데이터 저장소를 주입하여 팩토리를 작성하고 POCO를 구성하십시오. 어쨌든 좋은 생각 일 것입니다.
EightyOne Unite

3
나는 POCO는 EF 4에서 가능한들을
PositiveGuy

8
POCO 지원은 현재 이용 가능하며 상속은 더 이상 엔티티 클래스에 대한 요구 사항이 아닙니다. @CoffeeAddict POCO는 특정 프레임 워크에 의존하지 않는 단순한 객체 일뿐 아니라 현대 엔티티 프레임 워크 패턴의 주요 부분입니다.
Chris McGrath

46

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

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

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

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

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

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


36

Linq2Sql이 귀하의 요구 사항에 맞지 않으면 데이터베이스가 상당히 풍부하거나 잘못 설계되었습니다. Linq2Sql을 사용하는 크고 작은 웹 사이트가 약 10 개 있습니다. 엔티티 프레임 워크를 여러 번 보았지만 Linq2Sql을 통해 Entity 프레임 워크를 사용하는 좋은 이유를 찾을 수 없습니다. 즉, 데이터베이스를 모델로 사용하려고하므로 모델과 데이터베이스 사이에 1 대 1 매핑이 이미 있습니다.

현재 직장에는 200 개 이상의 테이블이있는 데이터베이스가 있습니다. 솔루션이 많이있는 오래된 데이터베이스이므로 Linq2Sql보다 Entity Framework의 이점을 볼 수 있지만 데이터베이스는 응용 프로그램의 엔진이므로 데이터베이스가 잘못 설계되고 내 응용 프로그램이 느리기 때문에 데이터베이스를 다시 디자인하는 것이 좋습니다. 또한 느려질 것입니다. 이러한 데이터베이스에서 Entity Framework를 사용하면 잘못된 모델을 위장하는 빠른 수정처럼 보이지만 그러한 데이터베이스에서 얻은 나쁜 성능을 위장 할 수는 없습니다.


1
작은 데이터베이스라도 데이터베이스 테이블과 코드 / 도메인 개체간에 1 : 1 관계가 아닌 다른 것이 필요할 수 있습니다. 버스 / 도메인 객체에서 원하는 추상화 정도에 따라 다릅니다.
alchemical

18
나는 :) 오늘 나는 내 사업체를 수작업으로 코딩하는 것을 좋아한다. 여전히 Linq2sql을 사용하지만 Linq2sql을 사용하여 데이터를 가져오고 linq2sql 엔티티를 사용자 정의 비즈니스 엔티티로 변환하는 리포지토리 내에서만 사용합니다. 어쩌면 or-mapper를 사용하는 것보다 조금 더 많은 일을 할 수도 있지만 여전히 비즈니스 계층에 OR-mapper 특정 코드가 없도록하고 싶습니다.
terjetyl

25

2
답변의 일부 내용이 올바르지 않습니다. Code First를 사용하는 경우 EDMX가 필요하지 않습니다. 그리고 Code First를 사용할 때 DI가 어떻게 작동하는지 이해하지 못합니다.
Maarten

1
또한 Linq to SQL은 모델 클래스에서 DB를 잘 채울 수 있습니다. DB 자체를 생성 할 수 있는지 확실하지 않지만 스키마 및 테이블 생성은 Linq의 SQL 기능에 해당합니다.
Tom Lint

답변 주셔서 감사합니다, 나는 하나를 사용 하면 데이터베이스에서 코드 / 매핑을 생성 하기 위해 sqlmetal.exe docs.microsoft.com/en-us/dotnet/framework/tools/… 를 사용할 수 있다고 생각합니다Linq to SQL
Vinod Srivastav

23

여기에 대한 답변은 Linq2Sql과 EF의 많은 차이점을 다루었지만 많은 주목을받지 않은 핵심 사항이 있습니다. Linq2Sql은 SQL Server 만 지원하는 반면 EF는 다음 RDBMS에 대한 공급자를 제공합니다.

Microsoft 제공 :

  • SQL Server, OBDC 및 OLE DB 용 ADO.NET 드라이버

타사 제공 업체를 통해 :

  • MySQL
  • 신탁
  • DB2
  • VistaDB
  • SQLite
  • PostgreSQL
  • 인포믹스
  • U2
  • 사이베이스
  • Synergex
  • 파이어 버드
  • Npgsql

몇 가지를 말하면

따라서 EF는 관계형 데이터 저장소에 대한 강력한 프로그래밍 추상화가되므로 개발자는 기본 데이터 저장소에 관계없이 일관된 프로그래밍 모델을 사용할 수 있습니다. 이 기능은 광범위한 일반 RDBMS와 상호 운용 할 수있는 제품을 개발할 때 매우 유용합니다.

추상화가 유용한 또 다른 상황은 조직 내의 여러 다른 고객 또는 다른 비즈니스 단위와 함께 작업하는 개발 팀의 일원이되어야하며 RDBMS의 수를 줄여 개발자의 생산성을 향상시키려는 경우입니다. 다양한 RDBMS에서 다양한 애플리케이션을 지원하기 위해 익숙합니다.


15

EF를 사용할 때 동일한 데이터베이스 모델 내에서 여러 데이터베이스를 사용할 수 없다는 것을 알았습니다. 그러나 linq2sql에서는 스키마 이름 앞에 데이터베이스 이름을 붙여서 할 수 있습니다.

이것이 내가 linq2sql로 작업을 시작한 이유 중 하나였습니다. EF가 아직이 기능을 허용했는지는 모르겠지만이 기능을 허용하지 않았 음을 읽었습니다.


12

데이터베이스가 간단하고 단순하면 LINQ to SQL이 수행합니다. 테이블 위에 논리적 / 추상적 인 엔터티가 필요한 경우 Entity Framework로 이동하십시오.


4
Entity Framework는 데이터베이스 상단의 추상화 계층을 허용합니다. 오늘날 많은 OR 매퍼의 문제점은 (제 생각에) 테이블과 클래스 사이에 1 대 1 매핑을 제공한다는 것입니다. 데이터베이스 모델이 비즈니스 모델 측면에서 생각하는 방식을 항상 반영하는 것은 아닙니다.
senfo

공간이 부족합니다. 어쨌든, 내가 위에서 말한 것에 기초하여, 나는 당신의 대답이 완전하지 않다고 주장합니다.
senfo

7
나는 이것이 정말로 나쁜 조언이라고 생각합니다. L2S는 데이터베이스의 단순성이나 복잡성에 관계없이 좋습니다 . 실제 함정은 우려를 적절히 분리하지 못하고 있습니다. 비즈니스 계층과 데이터 액세스 계층을 병합하려고하고 Linqed up 개체를 모든 것에 사용하려고하면 L2S 제한이 있습니다. 그러나 그것은 지나치게 단순하고 모 놀리 식 디자인의 문제입니다. L2S는 훌륭한 DAL을 만들고 비즈니스 규칙과는 별도로 쿼리 및 지속성을 고려하면 장기적으로 많은 영역에서 많은 문제를 해결할 수 있습니다.
mattmc3

1
이것은 아무것도 말해주지 않습니다. 당신의 용어는 무엇입니까?
PositiveGuy

1
"논리적 / 추상적"의 필요성에 대한 예로써 무엇을 의미합니까? 그렇습니다 나는 추상화가 무엇인지 알고 있지만 당신의 맥락에서 예를 들어주십시오 ... 정확하게 당신이 말하는 것을 나에게 설명하십시오 ... 설명하십시오. 그 말은 당신이 이것의 의미를 전혀 알지 못합니다.
PositiveGuy

8

고유 한 SQL 2008 데이터 유형을 아직 지원하지 않습니다. 내 관점과 다른 점은 Entity가 향후 릴리스에서 내 지리적 데이터 유형을 중심으로 모델을 구성 할 수있는 기회가 있으며 Linq to SQL은 포기하지 않을 것입니다.

nHibernate 또는 OpenAccess의 최신 기능을 궁금해하십시오.


3
Entity Framework 5부터 SQL Server 2008 공간 데이터 형식 (Open Geospatial Consortium OGS)이 지원되었습니다. 다른 공급자 (Devart for Oracle)도 지원되었습니다. msdn.microsoft.com/en-us/data/dn194325를 참조 하십시오 .
subsci

6

중간에 이상한 일이 없어 빠르게 무언가를 개발해야하고 테이블을 나타내는 엔티티가있는 시설이 필요하다고 생각합니다.

Linq2Sql은 LinQ와 함께 사용하면 훌륭한 개발 타이밍을 제공합니다.


4
"중간에 이상한 일이 없습니다", 알았어요.이게 무슨 뜻입니까? "중간에 이상한 것"의 예
PositiveGuy

이 답변을 편집하거나 삭제하면 좋을 것입니다. 더 이상 현대적인 개발에는 유용하지 않으며 사람들을 잘못된 길로 인도 할 수 있습니다.
Giulio Caccin

6

Linq-to-SQL을 사용하는 큰 프로젝트가있는 고객을 위해 일하고 있습니다. Entity Framework에는 당시 주요 기능이 부족하고 Linq-to-SQL의 성능이 훨씬 좋았 기 때문에 프로젝트가 시작되었을 때 확실한 선택이었습니다.

이제 EF가 발전했으며 Linq-to-SQL에는 비동기 지원이 부족하여 확장 성이 뛰어난 서비스에 적합합니다. 초당 100 개 이상의 요청이 있으며 데이터베이스를 최적화했지만 대부분의 쿼리는 여전히 완료하는 데 몇 밀리 초가 걸립니다. 동기식 데이터베이스 호출로 인해 스레드가 차단되어 다른 요청에 사용할 수 없습니다.

우리는이 기능만을 위해 Entity Framework로 전환하려고합니다. Microsoft가 Linq-to-SQL에 대한 비동기 지원을 구현하지 않았거나 커뮤니티가이를 수행 할 수 있도록 오픈 소스로 구현하지 않은 것은 부끄러운 일입니다.

부록 2018 년 12 월 : Microsoft는 .NET Core로 전환하고 있으며 Linq-2-SQL은 .NET Core에서 지원되지 않으므로 향후 EF.Core로 마이그레이션 할 수 있도록 EF로 이동해야합니다.

LLBLGen 과 같은 다른 옵션도 고려해야 합니다. 이미 오랜 기간 동안 존재하고 MS 데이터 솔루션 (ODBC, ADO, ADO.NET, Linq-2-SQL, EF, EF.core)보다 미래에 입증 된 성숙한 ORM 솔루션입니다.


2

Linq-to-SQL

SQL Server 만 지원하는 공급자입니다. SQL Server 데이터베이스 테이블을 .NET 개체에 매핑하는 매핑 기술입니다. ORM-Object-Relational Mapper에 대한 Microsoft의 첫 번째 시도입니다.

Linq-to- 엔티티

동일한 아이디어이지만 ORM과 같이 백그라운드에서 Entity Framework를 사용합니다. 다시 Microsoft에서, 다중 데이터베이스를 지원합니다. 엔터프라이즈 프레임 워크의 주요 장점은 개발자가 다른 데이터베이스에서 작업을 수행하기 위해 구문을 배울 필요가없는 모든 데이터베이스에서 작업 할 수 있다는 것입니다.

내 개인적인 경험에 따르면 Ef는 람다로 작성된 EF 이유 LINQ 언어와 비교할 때 LINQ의 성능이 낫습니다 (SQL에 대해 전혀 모르는 경우).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.