私は私の答えの一部を持っていると思います。TextTemplatesTransformations についてさらに多くのことを読んで、Model1.tt を次のように変更しました。
System.ComponentModel.DataAnnotations;
また、EdmPropertyType を受け入れるように WriteProperty メソッドを変更しました。このコードは、指定された長さ > 60 または最大定義文字列に由来するすべての文字列に対して複数行の注釈を生成するようになりました。また、オーバーフローの防止に役立つことが期待される maxlength アノテーションも生成します。使用する場合は、以下のように既存の WriteProperty オーバーロードの両方を変更する必要があります。
void WriteProperty(CodeGenerationTools code, EdmProperty edmProperty)
{
WriteProperty(Accessibility.ForProperty(edmProperty),
code.Escape(edmProperty.TypeUsage),
code.Escape(edmProperty),
code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
code.SpaceAfter(Accessibility.ForSetter(edmProperty)),edmProperty);
}
void WriteProperty(string accessibility, string type, string name, string getterAccessibility, string setterAccessibility,EdmProperty edmProperty = null)
{
if (type =="string")
{
int maxLength = 0;//66
bool bres = (edmProperty != null
&& Int32.TryParse(edmProperty.TypeUsage.Facets["MaxLength"].Value.ToString(), out maxLength));
if (maxLength > 60) // want to display as a TextArea in html
{
#>
[DataType(DataType.MultilineText)]
[MaxLength(<#=maxLength#>)]
<#+
}
else
if (maxLength < 61 && maxLength > 0)
{
#>
[MaxLength(<#=maxLength#>)]
<#+
}
else
if(maxLength <=0) //varchar(max)
{
#>
[DataType(DataType.MultilineText)]
<#+
}
}
#>
<#=accessibility#> <#=type#> <#=name#> { <#=getterAccessibility#>get; <#=setterAccessibility#>set; }
<#+
}
<#+ 行と #> 行が行の先頭から始まることを確認してください。これは TT 構文の要件であると思われます。
ティム