как сделать базу данных текстовых шаблонов T4 управляемой - PullRequest
0 голосов
/ 08 мая 2018

Я экспериментирую с генерацией кода, я написал небольшой шаблон, который делает то, что мне нужно, но мне нужно самому жестко закодировать свойства, я хочу извлечь имена классов и свойств из базы данных, где находятся таблицы являются классы и поля индекса являются свойствами. Идея состоит в том, чтобы написать класс фильтра на основе табличных индексов. Код, который я сейчас имею, предполагает, что у меня есть 1 таблица и 3 поля для использования в качестве критериев фильтрации. В настоящее время нет кода для генерации скомпилированной версии, поскольку VS делает это внутренне. Вот что у меня так далеко: </p> <pre><code><#@ template debug="false" hostspecific="false" language="C#" #> <#@ assembly name="System.Core" #> <#@ import namespace="System.Linq" #> <#@ import namespace="System.Text" #> <#@ import namespace="System.Collections.Generic" #> <#@ parameter name="namespacename" type="System.String" #> <#@ parameter name="filterobjectname" type="System.String" #> <#@ parameter name="property1" type="System.String" #> <#@ parameter name="property2" type="System.String" #> <#@ parameter name="property3" type="System.String" #> <#@ output extension=".cs" #> using AzzWork.Business; using Ventura.Business.Entities; <# string _namespacename; if(this.namespacename==null){_namespacename = "Ventura.Business";}else{_namespacename = this.namespacename;} #> <# string _classname; if(this.filterobjectname==null){_classname = "BusinessObject";}else{_classname = this.filterobjectname;}#> <# string _property1; if(this.property1==null){_property1 = "LastName";}else{_property1 = property1;}#> <# string _property1c = _property1.Substring(0, 1).ToLower() + _property1.Substring(1);#> <# string _property2; if(this.property2==null){_property2 = "Email";}else{_property2 = property2;}#> <# string _property2c = _property2.Substring(0, 1).ToLower() + _property2.Substring(1);#> <# string _property3; if(this.property3==null){_property3 = "FirstName";}else{_property3 = property3;}#> <# string _property3c = _property3.Substring(0, 1).ToLower() + _property3.Substring(1);#> <# string seperator1; if((_property1!=null && _property2!=null) || (_property1!=null && _property2==null && _property3!=null)){seperator1=", ";}else{seperator1="";}#> <# string seperator2; if(_property2!=null && _property3!=null){seperator2=", ";}else{seperator2="";} #> namespace <#= _namespacename #> { public static class <#= _classname #>FilterFactory{ internal static AzzFilterCollection<<#= _classname #>> GetFilterFor<#= _classname #>(<#if(_property1!=null){#>string <#=_property1c #>Part<#}#><#=seperator1#><#if(_property2!=null){#>string <#=_property2c #>Part<#}#><#=seperator2#><#if(_property3!=null){#>string <#=_property3c #>Part<#}#>) => new AzzFilterCollection<<#=_classname#>>() <#if(_property1!=null){ #> .AddFilterFor<#= _property1 #>(<#=_property1c #>Part) <#}#> <#if(_property2!=null){ #> .AddFilterFor<#= _property2 #>(<#=_property2c #>Part) <#}#> <#if(_property3!=null){ #> .AddFilterFor<#= _property3 #>(<#=_property3c #>Part)<#}#>; <#if (_property1!=null){#> internal static AzzFilterCollection<<#=_classname #>> AddFilterFor<#= _property1 #>(this AzzFilterCollection<<#= _classname#>> filterCollection, string <#= _property1c #>Part) { if (<#= _property1c #>Part == null) return filterCollection; var filter = new AzzFilter<<#=_classname#>>(<#=_classname#>.ColumnNames.<#=_property1#>, <#=_property1c#>Part); return filterCollection.AddFilter(filter); } <#}#> <#if (_property2!=null){#>internal static AzzFilterCollection<<#=_classname #>> AddFilterFor<#= _property2 #>(this AzzFilterCollection<<#= _classname#>> filterCollection, string <#= _property2c #>Part) { if (<#= _property2c #>Part == null) return filterCollection; var filter = new AzzFilter<<#=_classname#>>(<#=_classname#>.ColumnNames.<#=_property2#>, <#=_property2c#>Part); return filterCollection.AddFilter(filter); } <#}#> <#if (_property3!=null){#> internal static AzzFilterCollection<<#=_classname #>> AddFilterFor<#= _property3 #>(this AzzFilterCollection<<#= _classname#>> filterCollection, string <#= _property3c #>Part) { if (<#= _property3c #>Part == null) return filterCollection; var filter = new AzzFilter<<#=_classname#>>(<#=_classname#>.ColumnNames.<#=_property3#>, <#=_property3c#>Part); return filterCollection.AddFilter(filter); } <#}#> } }

1 Ответ

0 голосов
/ 08 мая 2018

Полагаю, вы ищете что-то для SQL.

Вам это помогает?

Это , Это (то же самое) ,

Также это

...