2010-04-23 4 views

답변

1

예 - 당신은 T4 템플릿에 임의의 유효한 .NET 코드를 실행할 수 있습니다 - 해당 템플릿이 결국하는 .NET 클래스로 변환됩니다 다음 컴파일 및 실행됩니다.

문제점 : 당신은 무엇을하려고 했습니까? 얼마나 멀리 왔습니까? 방책은 어디에 있습니까 ??

는 업데이트 :

  • 가 난 후 새 프로젝트 (콘솔 응용 프로그램)을 만들어 AdventureWorksData
  • 라는 클래스 라이브러리에 Linq에 - 투 - SQL 모델을 넣어
  • :
    나는 다음 시도
  • 나는이와 AdventureWorksData 조립

이 s의 것을 참조 etup 장소에서,이 같은 T4 템플릿 뭔가 작성할 수 있습니다

<#@ Template Language="C#v3.5" Debug="true" #> 
<#@ Output Extension=".cs" #> 
<#@ Assembly Name="System.Core.dll" #> 
<#@ Assembly Name="System.Data.dll" #> 
<#@ Assembly Name="System.Data.Linq.dll" #> 
<#@ Assembly Name="AdventureWorksData.dll" #> 
<#@ Import Namespace="System" #> 
<#@ Import Namespace="System.Data" #> 
<#@ Import Namespace="System.Data.Linq" #> 
<#@ Import Namespace="System.Linq" #> 
<#@ Import Namespace="AdventureWorksData" #> 
using System; 
using AdventureWorksData; 

namespace AdventureWorks.Products 
{ 
    public class ProductList 
    { 
<# 
     AdventureWorksDataContext ctx = new AdventureWorksDataContext(); 

     var result = from p in ctx.Products 
        where p.ProductCategoryID == 5 
        select p; 

     foreach (Product product in result) 
     { 
#> 
      public string <#= SanitizeName(product.Name) #> = "<#= product.ProductNumber #>/ID= <#= product.ProductID #>"; 
<# 
     } 
#> 
    } 
} 
<#+ 
     internal string SanitizeName(string input) 
     { 
      return input.Replace(" ", "_").Replace("-", "_").Replace("/", "_").Replace(".", "_").Replace(",", "_"); 
     } 
#> 

내가 여기서 할 것은 AdventureWorksLT 샘플 데이터베이스의 Products 이상 열거입니다, 나는 Linq에를 사용하여, ProductCategoryID == 5 모든 제품을 잡아.

그런 다음 문자열 변수의 이름이 제품 자체의 (새 니타 이징 된) 이름과 일치하는 문자열을 포함하는 클래스를 만들고 문자열 값에 데이터베이스의 해당 제품에 대한 정보 비트가 포함되어 있습니다.

여러분도 알다시피, Linq-to-SQL 모델과 LINQ 쿼리를 T4 템플릿에 쉽게 통합 할 수 있습니다.

+0

응답 해 주셔서 감사합니다. 예를 들어, 나는 다음과 같은 것을하려고 노력하고있다. T4 템플릿 내에서 db 연결을 설정해야하는지 (예 : NorthWind db 사용) 알고 싶습니다. var result = db fromProducts 여기서 p.CategoryID == 5 select p; \t \t \t \t \t \t \t 의 foreach (VAR 결과의 항목) { WriteComment (item.ProductName); – NewT4

+1

샘플 코드를 보내 주셔서 감사합니다. – NewT4

관련 문제