2011-12-20 1 views
0

데이터베이스에 두 개의 새로운 테이블 인 EmailCampaign과 EmailTemplate을 추가했습니다. 데이터베이스에서 모델 업데이트로 EDMX를 업데이트했습니다. EDMX는 RIA Services 클래스 라이브러리에 있습니다.ef 데이터베이스에서 모델을 업데이트 할 때 새 DomainService 파일을 다시 만들지 않고 DomainService를 업데이트하는 방법?

이제 클라이언트 측 (실버 라이트 라이브러리)에서 새로 만든 엔티티 만 이전 엔트리 만 볼 수 있습니다. EF Designer.cs에서 생성 된 코드를 확인했는데 새로운 엔티티가 있습니다. 클라이언트에서 액세스 할 수 없습니다.

EDMX를 삭제하고 읽으려고했지만 작동하지 않았습니다.

업데이트 엔티티가 도메인 서비스를 통해 노출되어 있다는 것을 알았습니다. 나는 도메인 서비스를 재현했고 모든 것이 잘 작동했다. 그러나 문제는 데이터베이스에 새 테이블이있을 때마다 새 도메인 서비스 .cs 파일을 생성하지 않고 도메인 서비스를 다시 생성하고 새로 생성 된 코드에 내 이전 코드를 붙여 넣고 복사 할 때마다 나타나는 모든 오류를 해결하는 방법입니다 (매번 같은). 그래서 부담입니다. 거기에 몇 가지 도구 또는 일부 프레임 워크가 있습니까?

답변

0

부분 수업은 친구입니다! 내 도메인 서비스 클래스를 작은 클래스로 나누었습니다. 자주 사용하는 엔티티를 그룹화하여 클라이언트 측 모델 클래스와 병렬 처리합니다. 도메인을 다시 만들려면 내가 테이블을 변경하는 경우

 public partial class xxx_DomainService : LinqToEntitiesDomainService<xxxEntities> 
     { 
     public IQueryAble<Address> GetAddresses() 
     { 
      return this.ObjectContext.Addressess; 
     } 
     ....more code 

     } 

그 방법은, 나는 단지이 : 그래서 내 주요 도메인 서비스 클래스는

[EnableClientAccess()] 
    public partial class xxx_DomainService : LinqToEntitiesDomainService<xxxEntities> 
    { 
    } 

다음 각 파일이 포함되어 ... 다음과 같습니다 서비스를 선택하십시오.

"새로운"테이블을 만들 때 위조 된 이름을 사용하고 파일을 만든 다음 "public partial class"행을 바꿉니다. 버디 파일은 전혀 변경하지 않아도됩니다. 네임 스페이스 조심해!

HTH, 리처드