답변:
모델을 동기화 상태로 유지하는 세 가지 방법이 있습니다.
디자이너에서 수정 된 테이블을 삭제하고 데이터베이스 탐색기에서 디자이너 화면으로 다시 끕니다. 나는 이것이 안정적으로 작동하려면 다음을 수행해야한다는 것을 알았습니다.
ㅏ. 데이터베이스 탐색기에서 데이터베이스 스키마를 새로 고칩니다 (오른쪽 클릭, 새로 고침)
b. 테이블을 삭제 한 후 디자이너를 저장하십시오
. c. 테이블을 다시 끈 후 다시 저장하십시오.
주 당신이 (협회의 자식 속성 끄기 예를 들어) 어떤 속성을 수정 한 경우 즉, 이것은 분명히 그 수정을 잃게됩니다 불구하고 - 당신이 다시 확인해야합니다.
SQLMetal을 사용하여 데이터베이스에서 스키마를 재생성하십시오. 나는 이것을 스크립트하는 방법을 보여주는 많은 블로그 게시물을 보았다 .
DBML의 특성 분할 창에서 직접 변경하십시오. 이것은 필드에 널 허용과 같은 간단한 변경에 적용됩니다.
DBML 디자이너는 Visual Studio 2015, 2017 또는 2019에 기본적으로 설치되어 있지 않습니다. VS를 닫고 VS 설치 관리자를 시작한 다음 설치를 수정해야합니다. SQL 도구에 LINQ를 설치해야하는 기능입니다. VS 2017/2019의 경우 개별 구성 요소> 코드 도구 에서 찾을 수 있습니다 .
예를 들어 열을 추가하여 .dbml-diagram의 테이블을 업데이트하려면 다음과 같이하십시오.
또한 Linq-to-SQL과 관련하여 깔끔한 작업을 수행 할 수있는 CodeSmith를 기반으로 하는 PLINQO 코드 생성 템플릿 세트를 확인할 수도 있습니다 .
PLINQO 사이트 ( http://www.plinqo.com)를 확인 하고 소개 비디오를보십시오.
내가 아는 두 번째 도구는 Huagati DBML / EDMX 도구 이며 DBML (Linq-to-SQL) 및 EDMX (Entity Framework) 매핑 파일 등을 업데이트 할 수 있습니다 (이름 지정 규칙 등).
마크
모든 .DBML 파일의 각 테이블에 대한 information_schema 모델을 동적으로 쿼리 한 다음 .DBML 파일의 일부를 데이터베이스의 새로운 스키마 정보로 덮어 쓰는 사용자 지정 작성 T4 템플릿을 사용합니다. 나는 높게이와 같은 솔루션을 구현하는 것이 좋습니다. 시간을 절약하고 테이블을 모델에 삭제하고 다시 추가하는 것과는 달리 연결을 유지할 수 있습니다. 이 솔루션을 사용하면 스키마가 변경 될 때 컴파일 타임 오류가 발생합니다. diffing이 정말 편리하기 때문에 버전 제어 시스템을 사용하고 있는지 확인하고 싶습니다. 이것은 DB 스키마 우선 접근 방식으로 개발하는 경우 잘 작동하는 훌륭한 솔루션입니다. 물론, 회사 코드를 공유 할 수 없으므로 직접 작성해야합니다. 그러나 Linq-to-XML을 알고이 를 통해 학교 갈이 프로젝트 에서 당신이 원하는 곳으로 갈 수 있습니다.
dbml을 업데이트하면 생성 된 코드도 업데이트되므로 VS2008에 내장 된 비주얼 디자이너를 사용하는 것이 좋습니다. 비주얼 디자이너 외부의 dbml을 수정하면 기본 코드가 동기화되지 않습니다.
테이블을 업데이트 한 다음 DBML을 업데이트하는 데 미묘한 차이가 있습니다. 기존 테이블을 변경 한 경우 외래 키 관계가 항상 즉시 적용되는 것은 아닙니다. 해결 방법은 프로젝트를 빌드 한 다음 테이블을 다시 추가하는 것입니다. 나는 이것을 MS 에보 고했으며 VS2010에 대해 수정되었다.
DBML 디스플레이에 새로운 외래 키 제약 조건이 표시되지 않습니다
주요 답변에 제공된 지침은 명확하지 않습니다. 테이블을 업데이트하려면
저장 프로 시저 업데이트의 경우 .dbml 파일에서 삭제 한 후 다시 삽입해야합니다. 그러나 저장 프로 시저에 두 개의 경로가있는 경우 (예 : 무언가; 일부 열 표시; 다른 일부 열 표시) 두 경로에 동일한 열 별칭이 있는지 확인하십시오 !!! 그렇지 않으면 첫 번째 경로 열만 존재합니다.
다음은 데이터베이스 테이블 중 하나에 추가 한 새 열을 포함하도록 LINQ to SQL dbml 및 관련 파일을 업데이트하기 위해 작동하는 완벽한 단계별 방법입니다.
위의 다른 제안에서 제안한대로 디자인 화면을 변경해야합니다. 그러나 몇 가지 추가 단계를 수행해야합니다. 다음은 완전한 단계입니다.
1. Drag your updated table from Server Explorer onto the design surface
2. Copy the new column from this "new" table to the "old" table (see M463 answer for details on this step)
3. Delete the "new" table that you just dragged over
4. Click and highlight the stored procedure, then delete it
5. Drag the new stored procedure and drop into place.
6. Delete the .designer.vb file in the code-behind of the .dbml
(if you do not delete this, your code-behind containing the schema will
not update even if you rebuild and the new table field will not be included)
7. Clean and Rebuild the solution (this will rebuild the .designer.vb file to include all the new changes!).