테이블의 스키마 정보를 사용하여 코드 생성을 사용자 정의 할 수 있도록 T4 템플릿에서 SQL (TSQL 또는 Linq To SQL)을 실행할 수 있습니까?T4 템플릿 내에서 LINQ TO SQL을 실행하는 방법은 무엇입니까?
감사 물론
테이블의 스키마 정보를 사용하여 코드 생성을 사용자 정의 할 수 있도록 T4 템플릿에서 SQL (TSQL 또는 Linq To SQL)을 실행할 수 있습니까?T4 템플릿 내에서 LINQ TO SQL을 실행하는 방법은 무엇입니까?
감사 물론
예 - 당신은 T4 템플릿에 임의의 유효한 .NET 코드를 실행할 수 있습니다 - 해당 템플릿이 결국하는 .NET 클래스로 변환됩니다 다음 컴파일 및 실행됩니다.
문제점 : 당신은 무엇을하려고 했습니까? 얼마나 멀리 왔습니까? 방책은 어디에 있습니까 ??
는 업데이트 :
AdventureWorksData
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 템플릿에 쉽게 통합 할 수 있습니다.
응답 해 주셔서 감사합니다. 예를 들어, 나는 다음과 같은 것을하려고 노력하고있다. 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
샘플 코드를 보내 주셔서 감사합니다. – NewT4