Est-il possible d'exécuter un SQL (TSQL ou Linq To SQL) à partir d'un modèle T4 afin que les informations de schéma d'une table puissent être utilisées pour personnaliser la génération de code?Comment exécuter LINQ TO SQL dans un modèle T4?
Merci
Est-il possible d'exécuter un SQL (TSQL ou Linq To SQL) à partir d'un modèle T4 afin que les informations de schéma d'une table puissent être utilisées pour personnaliser la génération de code?Comment exécuter LINQ TO SQL dans un modèle T4?
Merci
Oui bien sûr - vous pouvez exécuter un code arbitraire .NET valide dans un modèle T4 - ce modèle est converti en une classe .NET, après tout, qui est ensuite compilé et exécuté.
Quel est votre problème? Qu'avez-vous essayé de faire et jusqu'où êtes-vous venu? Où sont les barrages routiers ??
MISE À JOUR:
J'ai essayé les éléments suivants:
AdventureWorksData
AdventureWorksData
que l'assemblage référencéAvec ce s ise en place, je peux écrire un modèle T4 quelque chose comme ceci:
<#@ 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(",", "_");
}
#>
Ce que je fais ici est énumérer sur la Products
dans la base de données exemple AdventureWorksLT, et je prends tous les produits avec ProductCategoryID == 5
, en utilisant Linq. Je crée ensuite une classe qui contient des chaînes où le nom de la variable chaîne correspond au nom (stérilisé) du produit lui-même, et la valeur chaîne contient certains des bits d'information sur ce produit dans la base de données.
Comme vous pouvez le voir, vous pouvez assez facilement incorporer un modèle Linq-to-SQL et une requête LINQ dans votre modèle T4.
Merci pour la réponse. Par exemple, j'essaie de faire quelque chose comme ce qui suit. Je veux savoir comment la connexion db doit être configurée (par exemple, en utilisant NorthWind db) dans le template T4. var résultat = de p dans db.Produits où p.CategoryID == 5 sélectionnez p; \t \t \t \t \t \t \t foreach (point var en résultat) { WriteComment (item.ProductName); – NewT4
Merci pour l'exemple de code. – NewT4