1

비즈니스 응용 프로그램의 경우 기본 엔터티 모델을 제공하고 있습니다. 그 이후 최종 사용자는 자신의 특정 요구에 맞게 모델을 확장 할 수 있어야합니다.응용 프로그램 런타임에서 Entity Framework 모델 확장

기본 모델의 경우 데이터베이스 우선 접근 방식을 사용하고 싶습니다. 그러나 사용자가 확장 할 수 있도록 허용하는 방법을 모르겠습니다.

엔티티 모델 편집을위한 UI를 제공하는 것이고, 나머지는 모델 및 데이터베이스의 변경 사항을 이후에 반영하는 것입니다. 제안을하십시오.

편집 :
이 - 엔티티 모델 편집 및 저장되면, 모든 EF 시설 이전처럼 작동합니다.
- 모델 업데이트가 유지 보수시 수행됩니다. 즉, 비즈니스 사용자가 모델을 업데이트하지 않습니다.
- 영향을받는 프로젝트를 컴파일하고 새 어셈블리를 생성하여 사용할 수 있습니다.

답변

2

불가능합니다. 엔티티 모델을 수정할 때 관련 엔티티 클래스를 수정 (또는 새로 생성)해야합니다. => 응용 프로그램을 다시 컴파일하거나 동적 어셈블리를 사용해야합니다. 또한 런타임시 엔티티 매핑을 수정하는 API가 없으므로 새 엔티티 디자이너를 빌드해야합니다.

일반적으로 클라이언트 데스크톱에 C# 2010 Express를 설치하고 응용 프로그램을 수정, 다시 작성 및 다시 배포 할 수 있어야합니다.

편집 :

당신이 원하는 것은 필요

  • modifing에 EDMX - 매우 복잡한 XML 파일. 이를위한 사용자 정의 도구 작성은 복잡한 작업이 될 것입니다. 또한 사용자가 응용 프로그램을 중단하지 못하도록하는 논리를 추가해야합니다.
  • T4 템플릿을 실행하여 새 항목이나 수정 된 항목을 생성합니다.
  • 응용 프로그램 컴파일 - 사용자가 빌드를 변경하는 경우 어떻게해야합니까 ???
  • DB 재배포 - 전체 DB 생성 논리가 Visual Studio에서 실행되는 워크 플로이기 때문에이 자체는 꽤 나쁜 것입니다. 또한 데이터베이스를 업그레이드 할 수있는 다른 워크 플로가 필요합니다. 기본 워크 플로는 새로운 빈 DB 만 배포 할 수 있습니다. 이러한 워크 플로가 있지만 VS 2010 Premium 또는 Ultimate이 필요합니다.
+0

답장을 보내 주셔서 감사합니다. 여기에서 하나의 제약 조건을 제거 할 수 있다고 생각합니다. 즉, 응용 프로그램 유지 관리 중에 수행되는 응용 프로그램 모델 변경시 (즉, 사용자가 해당 시점에 응용 프로그램에 액세스 할 수 없음을 의미합니다.) 영향을받는 프로젝트를 컴파일하고 새로운 어셈블리. 이제 방법이 있습니까? – Kabeer

+0

원본 답변에 설명을 추가했습니다. –

+0

힘든 것으로 들립니다. 첫째, T4 템플릿은 Visual Studio에서만 사용할 수 있으며 제작 상자에 Visual Studio를 설치하면 너무 우아하지 않습니다. 따라서 데이터베이스 우선 접근 방식을 사용하여 기본 엔터티를 만들었다 고 가정하면 코드 우선 접근 방식을 사용하여 확장 성을 구현할 수 있습니까? 코드 우선 접근법에 의해 생성 된 모델이 데이터베이스 우선 모델에 중첩되는 방식이 있습니까? 그런 다음 두 개의 접근 방식에도 불구하고 모든 항목에 대해 단일 컨텍스트를 얻을 수 있도록 단일 컨텍스트를 사용할 수 있습니까? 마지막으로, EF 이상의 솔루션을 생각해 볼 수 있습니까? – Kabeer

관련 문제