Development Tip

데이터베이스 스키마 변경 후 LINQ to SQL 클래스를 업데이트하는 가장 좋은 방법

yourdevel 2020. 10. 19. 12:55
반응형

데이터베이스 스키마 변경 후 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로 생성 된 클래스.

DBML 도구의 스크린 샷


다음은 추가 소프트웨어없이 간단한 변경 (예 : 추가 된 필드, 몇 개의 테이블 등)에만 작동하는 쉬운 수정입니다.

명령:

  • 변경된 테이블의 복사본을 디자이너로 가져옵니다 (나중에 제거됨).
  • 이제 모든 새 (또는 변경된) 필드를 선택하고 ( 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 테이블에 열을 추가 한 경우 :

  1. * .dbml 파일을 엽니 다.
  2. 엔터티를 마우스 오른쪽 단추로 클릭하고 추가> 속성을 ​​선택합니다.
  3. 새 열에 대한 속성 창에서 값을 입력합니다.
  4. 솔루션을 구축하십시오.

자동 생성 된 모델 클래스는 추가 된 새 열을 반영해야합니다.

여기에 이미지 설명 입력

여기에 이미지 설명 입력

참고 URL : https://stackoverflow.com/questions/40022/best-way-to-update-linq-to-sql-classes-after-database-schema-change

반응형