IT Share you

.NET 4.0의 Entity Framework와 LINQ to SQL의 차이점은 무엇입니까?

shareyou 2020. 12. 11. 20:53
반응형

.NET 4.0의 Entity Framework와 LINQ to SQL의 차이점은 무엇입니까?


Professional ASP.NET MVC 2 판을 확인 하고 EF가 LINQ to SQL을 대체한다는 것을 깨달았습니다. 나는 첫 번째 책에서 LINQ to SQL에 익숙하지만 EF에 대해서는 아무것도 모릅니다. 어쨌든 코드를 읽는 동안 이름 외에는 아무것도 변경되지 않은 것 같습니다. 동일한 이전 저장소 클래스, 동일한 이전 기능.

나는 약간의 조사를했다. LINQ가 SQL에 국한되지 않는다는 것을 알고 있습니다. 또한 EF는 제한된 Microsoft 제품군 SQL 서버가 아닙니다. 이 2 살짜리 질문에서 사람들은 EF가 너무 복잡하다고 말하면서 만족하지 않습니다. 하지만 지금은 EF 이름으로 같은 코드를 읽고 있습니다. LINQ to SQL이 설치된 ADO.NET 엔터티 모델을 사용하여 클래스 만 생성됩니다. 이제 사실상의 표준 ORM이기 때문에 누구든지 EF 기능에 대한 소란을 없앨 수 있습니까?


그것들은 다소 유사하고 코드 측면에서 매우 유사한 방식으로 사용할 수 있지만 몇 가지 중요한 차이점이 있습니다. "LINQ"는 "LINQ to SQL"과는 다릅니다. EF는 LINQ도 사용합니다. 몇 가지 주목할만한 차이점은 다음과 같습니다.

  • LINQ to SQL은 대체로 SQL Server 전용이며 구현 방식이 아니라 설계 방식입니다. EF는 호환 가능한 ADO.NET 공급자가있는 경우 여러 DB를 지원하도록 설계되었으며 지원합니다.
  • 기본적으로 LINQ to SQL은 DB 메타 데이터 변경에 대해 매우 열악한 이야기를 가지고 있습니다. 모델의 일부를 처음부터 다시 생성해야하며 사용자 지정 내용이 손실됩니다.
  • EF는 다 대다 관계 및 상속과 같은 모델 기능을 지원합니다. LINQ to SQL은이를 직접 지원하지 않습니다.
  • .NET 3.5에서 LINQ to SQL은 EF보다 SQL Server 관련 기능을 훨씬 더 잘 지원했습니다. .NET 4에서는 대부분 사실이 아닙니다. 그 점에서 상당히 비슷합니다.
  • EF를 사용하면 Model First, DB First 또는 Code First 모델링을 선택할 수 있습니다. LINQ to SQL은 기본적으로 DB First 만 지원합니다.

EF는 v4.0으로 출시되었습니다. 그 전에는 사용하기가 조금 아팠고 추천하지 않았습니다. 이제 모든 새로운 LINQ-to- DB 코드는 EF4를 사용 하는 것이 좋습니다 .

새로운 기능에 관한 한 LINQ 부분은 실제로 LINQ to SQL과 매우 유사합니다. 그러나 이것은 완전히 다른 아키텍처입니다. EF4는 (EF) ADO.NET 공급자에 대한 LINQ 공급자 역할을 한 다음 다른 ADO.NET 공급자를 래핑합니다. 그래서 Entity SQL (내가 사용하지 않는)과 다른 기본 ADO.NET 공급자 (내가 사용하는)를 지원하는 EF와 같은 새로운 기능이 있습니다.

EF가 사용하는 XML 모델링 시스템은 더욱 강력한 매핑 추상화를 허용 합니다. 내가 정기적으로 사용하는 것은 엔터티 상속 관계에 매핑되는 동일한 기본 키를 가진 다른 테이블을 갖는 것입니다. 내가 이해하는 바에 따르면 LINQ to SQL에서이 작업을 수행하는 유일한 방법은 "선택기 열"을 사용하는 것입니다 (LINQ to SQL에서는 시도한 적이 없음).


LINQ to SQL과 Entity Framework의 차이점 :

LINQ to SQL :

  • SQL Server 데이터베이스에서만 작동합니다.
  • 관계를 유지하기 위해 .dbml을 생성합니다.
  • 복합 유형을 지원하지 않습니다.
  • 모델에서 데이터베이스를 생성 할 수 없습니다.
  • 엔티티 클래스와 관계형 테이블 / 뷰간에 일대일 매핑 만 허용됩니다.
  • DataContext를 사용하여 데이터를 쿼리 할 수 ​​있습니다.
  • 긴밀하게 결합 된 접근 방식을 제공합니다.
  • SQL Server에서만 신속한 애플리케이션 개발에 사용할 수 있습니다.

Entity Framework

  • Oracle, DB2, MYSQL, SQL Server 등과 같은 다양한 데이터베이스에서 작동 할 수 있습니다.

  • 처음에는 .edmx 파일을 생성합니다. 관계는 3 개의 다른 파일 .csdl, .msl 및 .ssdl을 사용하여 유지됩니다.

  • 복잡한 유형을 지원합니다.

  • 모델에서 데이터베이스를 생성 할 수 있습니다.

  • 엔티티 클래스와 관계형 테이블 / 뷰 간의 일대일, 일대 다 및 다 대다 매핑을 허용합니다.

  • EntitySQL, ObjectContext, DbContext를 사용하여 데이터를 쿼리 할 수 ​​있습니다.

  • 느슨하게 결합 된 접근 방식을 제공합니다. 코드 첫 번째 접근 방식을 사용하면 느슨하게 결합되는 종속성 주입 패턴을 사용할 수 있습니다.

  • SQL Server, Oracle, DB2 및 MySQL 등과 같은 RDBMS를 사용하여 신속한 애플리케이션 개발에 사용할 수 있습니다.

자세한 내용은


최신 EF는 훨씬 더 강력하며 디자이너가 주도하는 의사 ORM 경험 (또는 디자이너없이 수행하려는 경우 구성의 모욕)을 강요하지 않습니다. 이제 모델은 디자이너 주도 코드와 본질적으로 결합 된 일부 디자이너 주도 부분 클래스 엉터리 bs 대신 POCO 객체가 될 수 있습니다. 업스트림에서 수영하는 것처럼 느끼지 않고 디자이너로부터 완전히 벗어날 수 있으며 일반적으로 그런 것처럼 느껴집니다. 커뮤니티에 귀를 기울 였거나 실제로 "모트"또는 L2Sql에 대한 버전을 만드는 대신 기존의 전투 테스트를 거친 솔루션을 모방하려고했습니다.


LINQ to SQL은 LINQ 구문을 사용하여 SQL Server 데이터베이스를 쿼리하고 수정할 수있는 권한을 제공합니다. Entity Framework는 LINQ 구문을 사용하여 SQL Server, Oracle, DB2 및 MySQL 등과 같은 RDBMS를 쿼리하고 수정할 수있는 권한을 제공하는 Microsoft에서 제공하는 훌륭한 ORM입니다. 오늘날 EF는 데이터베이스에 쿼리하기 위해 모든 .NET 응용 프로그램에서 널리 사용됩니다.

즉, LINQ는 C # 코드를 다양한 종류의 메모리 내 개체에 연결하는 데 사용됩니다. Entity Framework는 C # 코드를 외부 데이터베이스 (일반적으로 SQL Server)에 연결하기위한 ORM (개체 관계형 매핑) 프레임 워크입니다. LINQ는 C #에 포함 된 쿼리 언어이며이를 유용하게 만들기위한 확장 메서드 집합입니다.

참고 URL : https://stackoverflow.com/questions/3293995/what-is-the-difference-between-entity-framework-and-linq-to-sql-by-net-4-0

반응형