MVC.net + clases de metadatos automáticos subsónicos de TT

No es una pregunta, pero no tengo un blog y acabo de crear un nuevo archivo TT subsónico que generará las clases de metadatos automáticamente para las clases subsónicas para que pueda omitir algo de trabajo al usar dataAnnotation y CreateForModel, etc.

así que el primer paso es modificar su ActiveRecord.TT con lo siguiente

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

Luego, por encima de la generación del nombre de clase, necesitamos hacer una referencia a nuestros metadatos de la siguiente manera:

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

eso es todo completado para ActiveRecord.tt

ahora su MetaGenerator TT está debajo, tenga en cuenta que mi inclusión es para MySql, deberá modificar esta línea para tener en cuenta su tipo de base de datos

<#@ 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; }  
<#    
}   
#>  
}  
<# }  
} #>   
}  

He agregado una pequeña comprobación para ver si el elemento es anulable o no, si no, entonces estoy agregando un elemento requerido.

ahora esto no es brillante, pero diría que es bastante trabajo para una base de datos grande y usar editorFor, etc. es una forma brillante de eliminar páginas sin siquiera pensarlo.

Al crear una vista de tipo fuerte para crear o editar, hago referencia a la clase MetaData en lugar de a la clase subsónica y todo es navegación en avión.

agregue esto a sus propias plantillas de código editadas personalizadas y realmente no tendrá que hacer mucho en el lado Html una vez que haya creado una página maestra.

de todos modos, ¡estoy seguro de que sería útil para una persona!