2012-12-19 3 views
2

DbContext와 분리 된 프로젝트에서 POCO를 먼저 작성하거나 T4가 생성 된 상태로 유지하려고합니다. 이렇게하면 엔티티 클래스가 하나의 데이터 액세스 서비스에 연결되지 않도록 할 수 있습니다.Entity Framework POCO T4 템플릿을 적용하여 별도의 프로젝트에 클래스를 만드는 방법은 무엇입니까?

새 DB 첫 EDMX 모델을 만들 때 마법사는 T4 템플릿을 생성하여 DbContext와 동일한 프로젝트의 모든 POCO를 생성합니다. 이 템플릿을 수정하여 클래스를 별도의 프로젝트에 추가하려면 어떻게해야합니까?

더 자세히 살펴보면 DbContext를 새 프로젝트로 옮기는 것이 훨씬 쉬울 것이지만 T4는 fileManager.StartNewFile에 대한 호출이 없으므로 어디에서 파일을 만들지 말하기 시작할 곳이 어디인지 알 수 없습니다.

+0

ProfK, 어떻게하면 poco가 별도의 프로젝트로 생성 될 수 있었는지 명확히 할 수 있습니까? 나는 EF와 양파를 사용하여 동일하게하려고 노력하고있다. – jr3

+0

@ jr3 나는 정말로 기억하지 못하지만, 나는 EF 마법사가 사용하는 .tt의 출력 경로를 방금 변경했다고 생각한다. – ProfK

답변

2

DAL 프로젝트에서 .tt 파일을 제외하고 을 다른 프로젝트의 링크으로 추가 할 수 있습니다.

이것은 모델을 볼 때 템플릿을 변경할 필요가 없음을 의미합니다.

실제 파일이 DAL 프로젝트에있을지라도 템플릿을 실행할 때 생성 된 파일은 데이터 개체 어셈블리에 포함됩니다.

유일한 단점은 모델을 업데이트 할 때 수동으로 사용자 지정 도구를 실행해야한다는 것입니다.

+0

수동으로 도구를 어떻게 실행합니까? – atconway

+1

@atconway 솔루션 탐색기에서'.tt' 파일을 마우스 오른쪽 버튼으로 클릭하고 "사용자 정의 도구 실행" –

+0

실제 파일은 별도의 프로젝트에 저장되므로 (원하는 경우) 내 'MyModel.context.cs' 파일은 원본 파일에 있으므로 .edmx 파일로 프로젝트 파일을 어디에 옮겼는지 알려주려면 어떻게해야합니까? 나는 별도의 프로젝트에 대한 참조를 추가했지만, 컨텍스트 파일에'using' 문을 새 프로젝트 네임 스페이스에 배치하지 않으면 다음과 같은 행이 실패합니다.'public DbSet People {get; 세트; }'그것은 다음과 같이 보일 것입니다.'public DbSet People {get; 세트; }'이것은 자동으로 생성 된 코드이지만 나는 이것을하고 싶지 않습니다. – atconway

1

이드의 말 :

1 .- 모델 프로젝트 (이 예를 들어 MyModel.tt) (MyProject.Model의 proyect), 원하는 이름으로 .TT 파일 ...

에서 파일을 만듭니다

2. DAL proyect로 이동하여 WhateverModel.tt 파일을 열고 내용을 MyModel.tt로 복사하십시오.

3. WhateverModel.tt form DAL proyect를 삭제하십시오. 대한 MyModel.tt에서

4 .- 봐 : 모델을 생성하는

const string inputFile = @"..\TheRelativeRouteToYourEdmxFileGoesHere.edmx"; 

6 .- 그리고 ... 실행 사용자 지정 도구 :

const string inputFile = @"WhateverModel.edmx"; 

5 .- 그리고로 교체 .

참고 : 7.- 지시 사항과 네임 스페이스를 사용하여 변경해야하지만 반드시 작동해야합니다.