SQL Server Data Tools & Entity Framework-여기에 시너지가 있습니까?


11

Linq2Sql을 사용하여 프로젝트에서 나오면 다음 (더 큰) 하나가 나를 Entity Framework의 팔로 밀어 넣을 것으로 의심됩니다. 나는 주제에 대해 약간의 독서를했지만, 내가 찾지 못한 것은 SQL Server Data Tools와 Entity Framework가 함께 사용되거나 어떻게 사용되어야하는지에 대한 일관된 이야기입니다.

  • 그들은 완전히 별개로 고안되었고, 그것들을 함께 사용하는 것이 잘못된 길을 걷고 있습니까?
  • 그들은 어떻게 든 완전히 직교 적이며 요점을 놓치고 있습니까?

내가 두 가지 모두를 원한다고 생각하는 몇 가지 이유 :

  • SSDT는 '컴파일'(확인)되고 쉽게 버전을 지정할 수있는 SQL 및 스키마를 제공하는 데 적합합니다.
  • 그러나 SSDT '마이그레이션 / 업데이트'이야기는 설득력이 없습니다. "아무것도 업데이트"는 스키마에는 문제가 없지만 데이터를 처리 할 수있는 방법 (AFAIK)은 없습니다.
  • 반면에, 비슷한 문제가 있는지 EF 마이그레이션을 시도하지 않았지만 Up / Down 비트는 매우 편리합니다.

EF 팀이 고려하고있는 것 같습니다. github.com/aspnet/EntityFramework/issues/4321
Snæbjørn

답변:


9

또 다른 관점에서 살펴 보겠습니다. Entity Framework Database Maintenance는 모든 엔터프라이즈 또는 대규모 데이터베이스 프로젝트에서 전혀 쓸모가 없습니다.

문제는 다음과 같습니다

  • 자동 스키마 업데이트. 데이터베이스 유지 관리의 기본 사항을 완전히 위반하기 때문에 이것은 내가 원하는 것이 아닙니다. 문제는 다음과 같습니다. (a) 최신 버전을 실행하는 누군가가 문제를 일으키는 대신 데이터베이스를 업데이트하고 (b) dba는 일반적으로 백업을 먼저 수행하여 업데이트를 예약합니다. 따라서 자동 업데이트는 쓸모가 없습니다.

  • DB 생성은 기본적으로 성능이 저하 된 에지 사례에서만 작동합니다. 어느 데이터베이스에 관계없이 고급 데이터베이스 기능을 사용하지 마십시오. SQL Server 예제 : 인덱스에 필드 포함, 인덱스 필터, 파티셔닝, 압축, 필드에 대한 유효성 검사 규칙.

  • 마이그레이션-데이터 변환이나 다단계 업데이트가 필요없는 엣지 사례가 다시 발생한다고 가정합니다. 예 : 표 X에는 사용자의 작업을 기록하는 기록 "사용자"필드가 있습니다. 새로운 설정에는 사용자 테이블이 있으므로 사용자 테이블을 생성 한 다음 사용자를 생성 한 다음 테이블 x에 사용자 참조 필드를 생성 한 다음 사용자 테이블에서 사용자로 업데이트 한 다음 사용자 필드를 삭제해야합니다.

이러한 시나리오를 처리 할 수있는 유일한 방법은 생성 및 마이그레이션 스크립트와 올바른 버전입니다.

이제 SSDT는 실제로 작동하기 때문에 Entity Framework보다 특정 데이터베이스 버전을 훨씬 더 잘 버전 화하는 훌륭한 도구입니다. 에서와 같이 : 그것은 모든 기능을 기록합니다. 데이터베이스가 없으면 코드를 먼저 사용할 수 있습니다. 우리는 항상 최소한 인덱스를 필터링했기 때문에 EF는 저에게 필요한 것의 10 %까지 도달하지 못할 것입니다.

우리의 접근 방식은 다음과 같습니다.

  • 데이터베이스에서 데이터베이스를 디자인 한 다음 체크인되는 SSDT 모듈로 동기화하십시오. 스키마 동기화를 통해 개발자는 버전을 빠르게 업데이트 할 수 있습니다. 항상 (특수 서버) 어딘가에 현재 버전의 권위있는 마스터 데이터베이스가 있으므로 참조 할 수있는 참조 버전이 있습니다.

  • 버전이 변경되고 데이터베이스에 배포 할 수있는 훌륭한 메커니즘을 갖춘 릴리스에 필요한 델타 스크립트를 생성하십시오.


3

SQL Server 데이터베이스에서 EF를 사용하는 방법은 여러 가지가 있습니다.

  1. 코드 우선 ... 클래스를 작성하면 EF가 관련 테이블을 생성합니다.
  2. 데이터베이스 우선 ... 테이블을 디자인하면 EF가 클래스를 생성합니다.

EF가 반드시 모든 업무를 수행하지는 않습니다. EF는 약 80-95 %의 혜택을 제공합니다. 데이터베이스 개발 노력의 다른 5-20 %는 뷰 및 저장 프로 시저와 같은 최적화로 보완됩니다.

그래서 그들은 직교하지 않습니다. 그러나 전체 설계 전략이 무엇인지 결정한 다음 SSDF와 같은 도구를 사용하여 EF가 이상적인 결과를 얻지 못하는 부분을 최적화 할 수 있습니다.


이상하게도이 답변이받은 편지함에 나타나지 않았습니다 ...
Benjol
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.