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, как только вы создадите главную страницу.
в любом случае наслаждайся уверен, что это будет полезно для одного человека!