데이터베이스 스키마 변경 후 LINQ to SQL 클래스를 업데이트하는 가장 좋은 방법
데이터베이스 디자인이 여전히 약간 유동적 인 프로젝트에서 LINQ to SQL 클래스를 사용하고 있습니다.
클래스를 스키마와 쉽게 동기화 할 수있는 방법이 있습니까? 아니면 테이블 디자인이 변경된 경우 클래스를 수동으로 업데이트해야합니까?
SQLMetal.exe를 사용하여 dbml 및 / 또는 cs / vb 파일을 생성 할 수 있습니다. 빌드 전 스크립트를 사용하여 시작하고 데이터 컨텍스트 프로젝트가 속한 디렉토리를 대상으로 지정하십시오.
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\sqlmetal.exe
/server:<SERVER>
/database:<database>
/code:"path\Solution\DataContextProject\dbContext.cs"
/language:csharp
/namespace:<your namespace>
직접 해본 적은 없지만 다른 사람들은 Huagati DBML / EDMX Tools 를 추천합니다.
Huagati DBML / EDMX Tools는 Visual Studio 2008의 Linq2SQL / DBML 다이어그램 디자이너와 Visual Studio 2008 SP1의 ADO.NET Entity Framework 디자이너에 기능을 추가하는 Visual Studio 용 추가 기능입니다. 이 추가 기능은 데이터베이스 변경 사항으로 Linq2SQL 디자이너 다이어그램을 업데이트하고, .net 명명 규칙을 사용하도록 Linq-to-SQL (DBML) 및 EF (EDMX) 클래스 및 속성의 이름을 바꾸고 Linq에 설명서 / 설명을 추가하기위한 새로운 메뉴 옵션을 추가합니다. 데이터베이스 속성에서 SQL로 생성 된 클래스.
다음은 추가 소프트웨어없이 간단한 변경 (예 : 추가 된 필드, 몇 개의 테이블 등)에만 작동하는 쉬운 수정입니다.
명령:
- 변경된 테이블의 복사본을 디자이너로 가져옵니다 (나중에 제거됨).
- 이제 모든 새 (또는 변경된) 필드를 선택하고 (
right-click ->
)copy
- 원래 테이블에서 마우스 오른쪽 버튼을 클릭하고
insert
(변경된 필드를 먼저 삭제 하십시오 ) - 이제 복사 한 테이블을 삭제하십시오.
나는 그것이 다소 명백하지만 어떻게 든 직관적이지 않으며 모든 올바른 속성과 유형이 복사되고 모든 링크가 그대로 유지되므로 많은 도움이되었습니다. 도움이 되었기를 바랍니다.
사용시기 :
물론 작은 변경의 경우이지만 많은 링크로 테이블을 수동으로 바꾸거나 SQLMetal에서 전체 데이터베이스 구조를 생성하지 않으려는 경우보다 확실히 좋습니다. 예를 들어 많은 양의 테이블 (예 : SAP)이 있거나 다른 데이터베이스에서 교차 연결된 테이블을 사용할 때.
DamienG는 VS가 사용자를 위해 생성하는 일부를 대체 할 수 있는 t4 템플릿 을 작성했습니다 . 명령 줄 도구를 통해 원할 때마다 다시 실행할 수 있습니다.
T4 템플릿에는 편집 가능한 추가 이점이 있습니다. 이를 통해 생성 된 내용을 마음대로 조정할 수 있습니다.
제프가 최근에 불평했다고 생각합니다. 일반적인 기술 중 하나는 모든 개체를 디자이너로 다시 끌어 오는 것입니다.
나는 다른 누군가가 더 나은 접근 방식을 사용하기를 바랍니다!
Dbml 스크립트에 대한 스크립트 변경을 수행하는 도구를 작성했습니다. http://code.google.com/p/linqtodbmlrunner/ 및 내 블로그 http://www.adverseconditionals.com을 참조하세요.
Visual Studio의 DataContext 디자인 화면에서 엔터티 / 테이블의 속성을 수정하는 것은 어떻습니까?
예를 들어 SQL Server 테이블에 열을 추가 한 경우 :
- * .dbml 파일을 엽니 다.
- 엔터티를 마우스 오른쪽 단추로 클릭하고 추가> 속성을 선택합니다.
- 새 열에 대한 속성 창에서 값을 입력합니다.
- 솔루션을 구축하십시오.
자동 생성 된 모델 클래스는 추가 된 새 열을 반영해야합니다.
'Development Tip' 카테고리의 다른 글
Razor / CSHTML-우리가 가진 것보다 어떤 이점이 있습니까? (0) | 2020.10.19 |
---|---|
VB 프로젝트를 C # 프로젝트로 변환하는 방법 (0) | 2020.10.19 |
Android에서 Simple HTTP 클라이언트를 어떻게 사용합니까? (0) | 2020.10.19 |
node.js가 웹 서버라고 말할 수 있습니까? (0) | 2020.10.19 |
git pull --rebase와 git pull --ff-only의 차이점 (0) | 2020.10.19 |