2009-11-30 4 views
1

T4 템플릿을 사용하면 코드를 추출 할 수있는 객체로 데이터베이스를 제공합니까?T4 템플릿을 사용하면 코드를 추출 할 수있는 객체로 데이터베이스가 제공됩니까?

또는 visualt4 도구가 필요합니까? 특히 데이터베이스 메타 데이터에 액세스하기위한 T4 자체에 내장 아무것도 없지만

+1

문제는 명확하지 않다을 제거해야 코드를 생략. T4 템플릿은 특별히 dtbabases와 관련이 없습니다. 물론 ADO.NET을 사용하여 데이터베이스에 연결하고 데이터를 사용하여 출력을 유도 할 수 있습니다. 출력은 항상 텍스트입니다. –

답변

3

, 당신은 기존의 .NET API를 사용할 수 있습니다. 특히 SQL Server에서만 작업해야하는 경우 SMO (http://msdn.microsoft.com/en-us/library/ms162169.aspx)를 사용할 수 있습니다.이 SMO는 잘 설계되어 사용하기 쉽습니다. 다음은 예입니다. http://www.olegsych.com/2008/09/t4-tutorial-creatating-your-first-code-generator/. 서버 코드가있는 ASPX 파일로 T4의

올렉

+0

출력을 파일에 쓰고 있습니까? mytable.cs와 같은가요? – mrblah

1

생각합니다. HTML은 direcly로 렌더링되고 모든 <% %> 코드 블록은 런타임에 실행되고 평가됩니다.

동일한 접근법. <# #> 블록 안에있는 모든 코드는 T4 템플릿 엔진이 템플릿을 실행할 때 실행됩니다. 이 블록 내에서 수행 할 수있는 모든 프레임 워크를 수행 할 수 있습니다. 원하는 경우 데이터베이스 연결을 열고 데이터를 읽고 코드를 생성 할 수 있습니다 (데이터베이스에 연결하여 ASPX 파일의 테이블 데이터에서 HTML을 생성하는 경우와 동일).

... 
public enum UserTypeFromDBLookupTable 
{ 
    <# while(reader.Read()) { #> 
    /// <summary><#= reader.Get("Description") #></summary> 
    <#= reader.Get("Name") #> = <#= reader.Get("UserTypeID") #>, 

    <# } #> 
} 
... 

을하고 것 출력 일부 룩업 테이블 (*)의 데이터를 기준으로 사용자를 열거 :

그래서 당신은 (이미 열려 DB 판독기가 후)이 작업을 수행 할 수 있습니다. 당신은 당신이 무엇이든간에 무엇이든 할 수 있기 때문에 이것이 매우 강력하고 유연하다는 것을 알 수 있습니다.

코멘트 (*)가 사물이 작동하는 방법을 보여 단순화 있기 때문에
코드 샘플을 직접 작동하지 않습니다. 예를 들어 나는 마지막 쉼표

관련 문제