MVC.net + Subsonic Auto Generate MetaData Classes von TT

Keine Frage, aber ich habe kein Blog und habe gerade eine neue Subsonic-TT-Datei erstellt, die die Metadatenklassen automatisch für die Subsonic-Klassen generiert, sodass Sie bei der Verwendung von dataAnnotation und CreateForModel usw. Einige Arbeiten überspringen können

Der erste Schritt besteht darin, ActiveRecord.TT wie folgt zu ändern

using System.ComponentModel; 
using System.Data.Common; 
using System.ComponentModel.DataAnnotations;

Dann müssen wir über der Generierung des Klassennamens einen Verweis auf unsere Metadaten erstellen:

[MetadataType(typeof(<#=tbl.ClassName#>MetaData))]
public partial class <#=tbl.ClassName#>: IActiveRecord

das ist alles für ActiveRecord.tt abgeschlossen

Jetzt ist Ihr MetaGenerator TT unten, beachten Sie, dass mein Include für MySQL ist. Sie müssen diese Zeile ändern, um Ihren DB-Typ zu berücksichtigen

<#@ include file="MySQL.ttinclude" #>  
using System;  
using System.ComponentModel;  
using System.ComponentModel.DataAnnotations;  

namespace <#=Namespace #>  
{  
<#  
var tables = LoadTables();  
foreach(Table tbl in tables)  
{  
if(!ExcludeTables.Contains(tbl.Name))  
{  
#>  
public class <#=tbl.ClassName#>MetaData  
{  
<# foreach(Column col in tbl.Columns)  
{  
if (tbl.ClassName == col.CleanName)  
{  
col.CleanName += "X";  
} #>    
[DisplayName("<#=col.CleanName #>: ")]   
<# if(String.IsNullOrEmpty(CheckNullable(col))) { #>  
[Required(ErrorMessage = "<#=col.CleanName #> is a required element.")] <# }      
#>          
public <#=col.SysType #><#=CheckNullable(col)#> <#=col.CleanName #>  { get;set; }  
<#    
}   
#>  
}  
<# }  
} #>   
}  

Ich habe eine kleine Überprüfung hinzugefügt, um zu sehen, ob der Artikel nullbar ist oder nicht. Wenn nicht, füge ich ein erforderliches Element hinzu.

Das ist zwar nicht genial, aber für eine große Datenbank wäre es ein ziemlicher Arbeitsaufwand. Die Verwendung von editorFor usw. ist eine hervorragende Möglichkeit, Seiten auszuschalten, ohne darüber nachzudenken.

Beim Erstellen einer stark typisierten Ansicht für ein Erstellen oder Bearbeiten beziehe ich mich eher auf die MetaData-Klasse als auf die Unterschallklasse, und alles ist dann ebenes Segeln

Fügen Sie dies Ihren benutzerdefinierten bearbeiteten CodeTemplates hinzu, und Sie müssen nicht viel auf der HTML-Seite der Dinge tun, sobald Sie eine Masterseite erstellt haben.

Trotzdem genieße ich bin mir sicher, dass es für eine Person nützlich wäre!