MVC.net + subsônico auto gerar classes MetaData do TT
Não é uma pergunta, mas eu não tenho um blog e acabei de criar um novo arquivo TT subsônico que gerará as classes de metadados automaticamente para as classes subsônicas, para que você possa pular algum trabalho ao usar dataAnnotation e CreateForModel etc.
portanto, o primeiro passo é alterar o seu ActiveRecord.TT com o seguinte
using System.ComponentModel;
using System.Data.Common;
using System.ComponentModel.DataAnnotations;
Acima da geração do nome da classe, precisamos fazer uma referência aos nossos metadados da seguinte forma:
[MetadataType(typeof(<#=tbl.ClassName#>MetaData))]
public partial class <#=tbl.ClassName#>: IActiveRecord
isso é tudo concluído para o ActiveRecord.tt
agora seu MetaGenerator TT está abaixo, observe que minha inclusão é para MySql, você precisará alterar esta linha para contabilizar seu tipo de banco de dados
<#@ 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; }
<#
}
#>
}
<# }
} #>
}
Eu adicionei uma pequena verificação para ver se o item é anulável ou não; caso contrário, estou adicionando um elemento necessário.
agora isso não é brilhante, mas diria um pouco de trabalho para um banco de dados grande e o uso do editor.
Ao criar uma visualização de tipo forte para uma criação ou edição, faço referência à classe MetaData em vez de à classe subsônica e tudo é planado.
adicione isso ao seu próprio CodeTemplates editado personalizado e você realmente não precisará fazer muito do lado HTML, uma vez criada a página mestre.
de qualquer maneira desfrute, tenho certeza de que seria útil para uma pessoa!