데이터베이스 스키마 변경 후 LINQ를 SQL 클래스로 업데이트하는 가장 좋은 방법
-
09-06-2019 - |
문제
저는 데이터베이스 디자인이 여전히 유동적인 프로젝트에서 LINQ to SQL 클래스를 사용하고 있습니다.
클래스를 스키마와 쉽게 동기화할 수 있는 방법이 있습니까? 아니면 테이블 디자인이 변경되면 클래스를 수동으로 업데이트해야 합니까?
해결책
SQLMetal.exe를 사용하여 dbml 및/또는 cs/vb 파일을 생성할 수 있습니다.사전 빌드 스크립트를 사용하여 이를 시작하고 datacontext 프로젝트가 속한 디렉터리를 대상으로 지정합니다.
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 도구 다른 사람들이 추천합니다.
Huagati DBML/EDMX 도구는 Visual Studio 2008의 LINQ2SQL/DBML 다이어그램 디자이너와 Visual Studio 2008 SP1의 ADO.NET Entity Framework Designer에 기능을 추가하는 Visual Studio 용 추가 기능입니다.추가 기능은 데이터베이스 변경으로 LINQ2SQL 디자이너 다이어그램을 업데이트하고 LINQ-to-SQL (DBML) 및 EF (EDMX) 클래스 및 속성을 .NET 명명 규칙을 사용하여 LINQ에 문서/설명을 추가하기위한 새로운 메뉴 옵션을 추가합니다. -to-sql 데이터베이스 속성에서 클래스를 생성했습니다.
다음은 추가 소프트웨어 없이 간단한 변경(예: 추가된 필드, 소수의 테이블 등)에만 작동하는 쉬운 수정 방법입니다.
지침:
- 변경된 테이블의 복사본을 디자이너로 가져옵니다(나중에 제거됨).
- 이제 새로운(또는 변경된) 필드를 모두 선택하고 (
right-click ->
)copy
- 원본 테이블에서 마우스 오른쪽 버튼을 클릭하고
insert
(변경된 필드를 먼저 삭제하세요) - 이제 복사한 테이블을 삭제하세요.
나는 그것이 다소 명백하다는 것을 알고 있지만 다소 직관적이지 않으며 모든 올바른 속성과 유형이 복사되고 모든 링크가 그대로 유지되므로 많은 도움이 되었습니다.도움이 되길 바랍니다.
사용 시기:
물론, 말했듯이 작은 변경의 경우에는 그렇습니다. 그러나 많은 링크가 있는 테이블을 수동으로 교체하거나 SQLMetal에 의해 생성된 전체 데이터베이스 구조를 원하지 않는 경우에는 확실히 더 좋습니다.예를 들어 테이블 수가 많은 경우(예:SAP) 또는 다른 데이터베이스의 교차 연결된 테이블을 사용하는 경우.
DamienG가 일부 글을 작성했습니다. t4 템플릿 이는 VS가 생성하는 것 중 일부를 대체할 수 있습니다.명령줄 도구를 통해 언제든지 다시 실행할 수 있습니다.
T4 템플릿에는 편집이 가능하다는 추가적인 이점이 있습니다.이를 통해 하트 콘텐츠에 생성되는 내용을 조정할 수 있습니다.
내 생각엔 Jeff가 최근에 이것에 대해 불평한 것 같아요.일반적인 기술 중 하나는 모든 개체를 디자이너로 다시 끌어오는 것입니다.
다른 사람이 더 나은 접근 방식으로 차임하기를 바랍니다!
Dbml 스크립트에 대한 스크립트 변경을 수행하는 도구를 작성했습니다. http://code.google.com/p/linqtodbmlrunner/ 그리고 내 블로그 http://www.adverseconditionals.com