Visual Studio에서 새 데이터 항목을 추가 할 때 EF 6.x DbContext 생성기 옵션의 목적
LINQ to SQL을 사용하여 빌드 한 웹 앱이 있으며 LINQ to Entity Framework로 업그레이드하려고합니다. 몇 가지 자습서를 살펴본 결과 기본적으로 데이터베이스 우선 시나리오에서 ADO.NET 엔터티 데이터 모델을 만드는 것을 배웠습니다. 그리고 여기에서 모델에 포함 할 테이블을 선택합니다 (LINQ to SQL과 매우 유사).
내에서 새 항목 추가 대화, 나는 만들어 또 다른 옵션이 있다는 것을 볼 EF 6.x에서 DbContext 생성기 :
ADO.NET 엔터티 데이터 모델 (대화 상자의 첫 번째 옵션) 과 비교하여 EF 6.x DbContext 생성기 의 목적은 무엇입니까 ? 그리고 EF 6.x DbContext Generator의 용도는 무엇입니까? 텍스트 파일을 만드는 것 같습니다. 어떻게해야합니까?
이미 데이터베이스가있는 경우 접근 방식이 LinqToSQL에서 이미 작업중인 것과 매우 유사하므로 첫 번째 옵션이 더 좋습니다. .EDMX 파일은 또한 데이터베이스의 그래픽 시각화를 제공 할 수 있으며 다른 것에 대해 걱정할 필요가 없습니다.
DbContext 생성기는 ObjectContext를 훨씬 간단하고 짧은 코드로 대체하여 Entity 개체를 데이터베이스 개체에 연결합니다. 30 개의 필드가있는 단일 데이터베이스 테이블은 ObjectContext로 약 800 줄의 코드로 표현되지만 DbContextGenerator에 의해 생성 된 클래스와 DbContext로 이해하기 쉬운 약 40 줄의 코드로 표현됩니다.
DbContext 생성기는 두 개의 파일을 만듭니다.
연결 문자열 세부 정보와 각 테이블에 대한 DbSet을 사용하여 DbContext를 생성합니다.
각 테이블을 나타내는 클래스 생성. 이러한 .tt 폴더를 열면 DbContext 및 생성 된 클래스가 표시됩니다. 이러한 클래스로 아무것도 할 필요가 없습니다. 컨트롤러 작업에서 참조합니다.
연습은 http://msdn.microsoft.com/en-US/data/jj206878 에서 사용할 수 있습니다 .
나는 이것이 EntityFramework 및 생성기와 관련된 필수 기사라고 생각합니다.
다음은 기사 소개입니다.
Entity Framework Designer를 사용하여 모델을 만들면 클래스와 파생 된 컨텍스트가 자동으로 생성됩니다. 기본 코드 생성 외에도 생성되는 코드를 사용자 지정하는 데 사용할 수있는 여러 템플릿도 제공합니다. 이러한 템플릿은 T4 텍스트 템플릿으로 제공되므로 필요한 경우 템플릿을 사용자 지정할 수 있습니다.
일반적으로 이러한 생성기는 db 모듈을 LinqToSQL에서 EntityFramework 로 변환하지 않습니다 .
완전한 데이터베이스가있는 경우 (Linq2SQL 기반 모듈로 있다고 가정) ADO.NET Entity Data Model (새 항목 추가 : EDMX)을 사용하고 'Generate from database'(추가 후 VS Wizard)를 선택하는 것이 좋습니다. .
DB를 먼저 수행하는 방법에는 두 가지가 있습니다. 하나는 EDMX 파일과 관련된 것이고 다른 하나는 첫 번째 POCO를 코딩하는 리버스 엔지니어링을 포함합니다.
EDMX 파일이있는 경우 엔티티를 생성하는 데 사용되는 생성기를 설치하고 몇 가지 옵션이 있습니다. 하나는 DbContext이고 다른 하나는 ObjectContext를 기반으로 개체를 생성하는 EntityObject 생성기입니다.
첫 번째 옵션은 EF (모든 버전)와 함께 작동하는 Model-First 파일을 생성합니다. 기존 데이터베이스에서 EF-Model을 업데이트 (또는 구성)하도록 선택하면 두 번째 옵션을 선택하면 생성 할 기능이 제공됩니다. Code-First EF 작업을위한 솔루션을 구축하기위한 해당 파일.
내 경험에 따르면 두 번째 선택은 가치있는 옵션이 아니며 Code-First EF로 작업하기로 결정한 경우 깨끗한 파일을 열고 자유롭게 코드를 작성하고 Code-First에서 제공하는 최대 유연성을 누리는 것이 좋습니다. 그리고 그들의 관습.
'Development Tip' 카테고리의 다른 글
퀴즈로 C #의 중첩 된 제네릭 클래스 이해 (0) | 2020.12.05 |
---|---|
REST : 하나의 요청으로 여러 리소스 업데이트-표준입니까 아니면 피해야합니까? (0) | 2020.12.05 |
iPhone 6/7 사용자 정의 전폭 이미지의 크기를 지정하는 방법은 무엇입니까? (0) | 2020.12.05 |
git은 파일이 수정되었음을 어떻게 감지합니까? (0) | 2020.12.05 |
Maven에서 종속성에 대한 저장소를 지정하는 방법 (0) | 2020.12.05 |