2011-03-20 5 views
3

"데이터베이스에서 모델 업데이트"를 마우스 오른쪽 단추로 클릭하여 엔터티 프레임 워크를 업데이트했습니다. 나는 보통 "추가"탭을 클릭 한 다음 테이블을 클릭하고 마침을 클릭합니다. 나는 또한 때로는 "새로 고침"을 사용합니다. 이들의 차이점은 무엇입니까? 또한 새로 고치거나 추가 할 때 엔티티가 잘못되거나 캐시에있는 오래된 정보 중 일부를 유지할 때 어떻게 데이터베이스를 검색하고 이전 캐시 된 항목을 정리할 수 있습니까?엔터티 프레임 워크를 업데이트하는 방법

+1

새로 고침이 무엇인지 전혀 알지 못합니다. 아무것도 새로 고치지 않는 것! 필자는 항상 엔티티를 삭제 한 다음 add 옵션을 사용합니다. –

답변

3

오래된 항목은 지워지지 않습니다. 그 (것)들을 너 자신 삭제해야한다. 긍정적 인 측면에서 Visual Studio는 컴파일 할 때 coloumn 또는 두 개가 매핑되지 않았다는 오류를 표시합니다. 엔티티 프레임 워크 도구는 코드 생성기에 가깝습니다. 구조 정보가없는 경우 데이터베이스에 연결되는 것과 달리 데이터베이스의 구조를 기반으로 클래스를 생성합니다.

5

네, 맞습니다. 디자이너는 약간 버그가있어서 특정 스키마 변경 사항을 특히 잘 처리하지 못합니다. 일반적으로 데이터베이스에 테이블을 추가하면 Update model from database을 실행하고 Add 탭에서 테이블을 선택합니다. 잘 작동합니다. 기존 표에 필드를 추가하면 Update modelRefresh입니다. 잘 작동합니다.

그러나 필드 하나를 추가하고 다른 필드를 제거하거나 기존 필드의 이름을 변경하면 EF가이 필드를 올바르게 처리하지 못합니다 (새 필드를 추가했지만 이전 필드를 제거하지 못했습니다. 하나는 맵핑되지 않은 상태로 남아 있었고, 모델 검증은 실패했다). 그래서 더 복잡한 경우 엔 보통 엔티티를 삭제 한 다음 Update model from databaseAdd을 다시 수행합니다.

일부 변경 사항 (예 : 엔티티의 일부 필드 또는 탐색 속성 이름이 변경됨)을 변경하면 이러한 변경 작업을 다시 수행해야한다는 단점이 있습니다.

1

디자이너가 버그가 없으며 일부 변경 사항을 처리하지 않는 이유는 사용자가 만든 CSDL 및 일부 MSL 수정 사항을 덮어 쓰지 않기 때문입니다. CSDL은 디자이너에서 볼 수있는 다이어그램이고 MSL은 엔티티와 연결의 매핑입니다.

Linq-to-SQL과 비교할 때 업데이트가 존재하지 않았으며, 모델을 새로 고침 할 때 항상 변경 사항을 포함한 모든 것을 삭제해야한다는 점을 생각해보십시오. 변경을 많이했다면 EF 디자이너에서도 엔티티를 삭제할 수 있습니다. EF 디자이너는 업데이트하거나 다시 만들 수있는 옵션을 제공합니다 (이전 버전을 삭제).

+0

''디자이너가 버그가 없으며 일부 변경 사항을 처리하지 않는 이유는 CSDL 및 사용자가 만든 일부 MSL 수정 사항을 덮어 쓰지 않기 때문입니다. "* 업데이트 모델을 실행할 때 * 기능 * (버그가 아님)으로 연결됩니다. 데이터베이스에서) – Yakimych

+0

그것은 당신이 작업하고있는 VS의 버전에 따라 다르다. 테이블 연결과 다른 것들을 처리하지 않는 경우가 있습니다. –

관련 문제