Je souhaite créer pour chaque entité de mon modèle edmx un fichier de classe distinct appelé {0} Validator.cs (ne se soucie pas de son contenu pour le moment).Empêcher le modèle T4 de supprimer des fichiers existants
Cela semble fonctionner, mais je ne peux pas le faire pour empêcher mon modèle T4 de supprimer tous mes fichiers en premier. Comment puis-je me débarrasser de ce comportement? Ce que j'ai découvert est que si j'appelle fileManager.Process (true), tous les fichiers sous mon fichier validator.tt seront recréés (et je ne veux pas cela).
Des idées s'il vous plaît? Merci!
<#@ template language="C#" debug="false" hostspecific="true"#>
//<#@ include file="EF.Utility.CS.ttinclude"#>
<#@output extension=".cs"#>
<#
CodeGenerationTools code = new CodeGenerationTools(this);
MetadataLoader loader = new MetadataLoader(this);
CodeRegion region = new CodeRegion(this, 1);
string inputFile [email protected]"ServicesEntities.edmx";
EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
string namespaceName = code.VsNamespaceSuggestion();
EntityFrameworkTemplateFileManager fileManager = EntityFrameworkTemplateFileManager.Create(this);
// for test purposes only...
fileManager.Process(true);
// for each entity, create a xxxValidator.cs file
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
{
string fileName = entity.Name + "Validator.cs";
string filePath = this.Host.TemplateFile.Substring(0,this.Host.TemplateFile.LastIndexOf(@"\"));
filePath = filePath + @"\" + fileName;
if(!File.Exists(filePath))
{
fileManager.StartNewFile(filePath);
#>
// the content of the validator class
public partial class <#=code.Escape(entity)#>
{
public bool ValidateModel()
{
// enter checkmethods here!!! again
return true;
}
}
<#
}
}
fileManager.Process(true);
#>
Merci pour votre réponse.Bien sûr, les classes personnalisées sont dans des classes partielles séparées, mais les partiels doivent être créés chaque fois que le modèle t4 est exécuté et si edmx a été mis à jour par l'utilisateur (une nouvelle table a été ajoutée), les classes existantes doivent être intactes. Une nouvelle classe de validateurs pour le tableau de données nouvellement ajouté doit être générée (et non fabriquée à la main par l'utilisateur). C'est ce que je veux avoir, mais peut-être que fournir un extrait ou un modèle prend moins de temps à cette fin ;-). Merci! – HarryK
Oui, cela semble être la meilleure solution pour vos besoins, parce que vous voulez être en mesure de dire à T4 d'épargner les fichiers déjà générés. – sra
Salut Sra, je pense que je vais le faire d'une manière snippet/template - je n'ai pas le temps de perdre :-). Merci pour vos réponses! – HarryK