Bonjour,
Je cherche des pistes pour modifier trois fichiers CS par programme.
Au départ j'ai un template T4 qui me génères 3 fichiers à partir du nom d'une table de ma base de données.
Il s'agit d'un vielle version du template POCO generator que j'ai adapté à mes besoins.
https://marketplace.visualstudio.com...ePOCOGenerator
J'ai un premier fichiers qui ressemble à ceci :
Où l'objectif est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 [Table("KUNDE", Schema = "dbo")] [System.CodeDom.Compiler.GeneratedCode("EF.Reverse.POCO.Generator", "2.36.1.0")] public class Kunde : Entity { [DatabaseGenerated(DatabaseGeneratedOption.None)] [Column(@"K_Code", Order = 1, TypeName = "varchar")] [Index(@"K_Code", 2, IsUnique = true, IsClustered = false)] [MaxLength(17)] [StringLength(17)] [Key] [Display(Name = "Code")] public string Code { get; set; } [NotMapped] [Column(@"K_Vorname", Order = 2, TypeName = "varchar")] [Index(@"K_Vorname", 1, IsUnique = false, IsClustered = false)] [MaxLength(35)] [StringLength(35)] [Display(Name = "Vorname")] public string Vorname { get; set; } [NotMapped] [Column(@"K_Anderungsdatum", Order = 3, TypeName = "datetime")] [Display(Name = "Änderungsdatum")] public System.DateTime Anderungsdatum { get; set; } }
- repérer l'attribut Column portant le nom d'une colonne en particulier (exemple K_Vorname)
- enlever l'attribut NotMapped sur la propriété correspondante
- changer le nom de la propriété en FirstName
Un deuxième qui ressemble à ceci :
Où l'objectif est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 [System.CodeDom.Compiler.GeneratedCode("EF.Reverse.POCO.Generator", "2.36.1.0")] public class Kunde Configuration : System.Data.Entity.ModelConfiguration.EntityTypeConfiguration<Kunde> { public KundeConfiguration() : this("dbo") { } public KundeConfiguration(string schema) { Property(x => x.Code).IsUnicode(false); // K_Code //Property(x => x.Vorname).IsOptional().IsUnicode(false); // K_Vorname //Property(x => x.Anderungsdatum).IsOptional(); // K_Anderungsdatum }
- repérer le commentaire portant le nom d'une colonne en particulier (exemple K_Vorname)
- Enlever le commentaire au début de la ligne
- changer le nom de la propriété en FirstName
- Certaines colonnes notamment celles de type Entier sont potentiellement absentes de ce fichier.
Et le troisième qui ressemble à ceci :
Où l'objectif est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", Justification = "They are fields names")] public static class KundeTableInformationStore { /* CA1024 (Design) * Use property if appropriate */ public static ODataTableInformationModel TableAndFields { get { return GetTableAndFields(); } } private static ODataTableInformationModel GetTableAndFields() { ODataTableInformationModel result = new ODataTableInformationModel() { Name = "Kunde", InternalName = "KUNDE", Description = "Kunden", Prefix = "K", Key = "K_Code", Fields = GetFieldsOnly() }; return result; } /* CA1024 (Design) * Use property if appropriate */ public static System.Collections.Generic.IEnumerable<ODataFieldInformationModel> Fields { get { return GetFieldsOnly(); } } private static System.Collections.Generic.IEnumerable<ODataFieldInformationModel> GetFieldsOnly() { return new System.Collections.Generic.List<ODataFieldInformationModel>() { new ODataFieldInformationModel() { TableName = "KUNDE", Name = "Code", InternalName = "K_Code", Description = "Code", DataType = "VARCHAR(17)", Mapped = true }, new ODataFieldInformationModel() { TableName = "KUNDE", Name = "Vorname", InternalName = "K_Vorname", Description = "Vorname", DataType = "VARCHAR(35)" }, new ODataFieldInformationModel() { TableName = "KUNDE", Name = "Änderungsdatum", InternalName = "K_Anderungsdatum", Description = "Änderungsdatum", DataType = "DATE" }, } }
-Changer la valeur de la propriété Name en mettant "Customer" dans l'objet ODataTableInformationModel utilisé dans GetTableAndFields
- idem pour la propriété Description où il faut mettre "Customers"
-Changer la valeur de la propriété Name en mettant "FirstName" dans l'objet ODataFieldInformationModel utilisé dans GetFieldsOnly
- idem pour la propriété Description où il faut mettre "First Name"
- Ajouter une propriété Mapped avec la valeur true
Aujourd'hui je dois faire tous ces changements à la main et pas uniquement pour une seule colonne mais plusieurs dizaines réparties dans plusieurs tables
C'est un processus long et source d'erreurs et j'aimerai l'automatiser.
Existe-il un librairie me permettant de faire simplement et surtout automatiquement ces modifications ?
Merci.
Partager