MVC.net + дозвуковая автоматическая генерация классов метаданных из TT

Не вопрос, но у меня нет блога, и я только что создал новый дозвуковой файл TT, который будет автоматически генерировать классы метаданных для дозвуковых классов, чтобы вы могли пропустить некоторые работы при использовании dataAnnotation, CreateForModel и т. Д.

поэтому первым шагом является изменение вашего ActiveRecord.TT следующим

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

Затем над генерацией имени класса нам нужно сделать ссылку на наши метаданные следующим образом:

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

Вот и все, что завершено для ActiveRecord.tt

теперь ваш MetaGenerator TT ниже, обратите внимание, что мое включение относится к MySql, вам нужно будет изменить эту строку, чтобы учесть ваш тип БД

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

Я добавил небольшую проверку, чтобы увидеть, является ли элемент обнуляемым или нет, если нет, то я добавляю обязательный элемент.

сейчас это не блестяще, но для большой базы данных было бы довольно много работы, и использование editorFor и т. д. - отличный способ выбить страницы, даже не задумываясь об этом.

при создании строго типового представления для создания или редактирования я делаю ссылку на класс MetaData, а не на дозвуковой класс, и тогда все идет по плоскости

добавьте это к своим собственным отредактированным шаблонам CodeTemplates, и вам не нужно много делать на стороне Html, как только вы создадите главную страницу.

в любом случае наслаждайся уверен, что это будет полезно для одного человека!

Ответы на вопрос(1)

Ваш ответ на вопрос