Ric*_*ard 13 css t4 entity-framework entity-framework-4
如果我有.tt模板,我可以使用entity.Name来写出实体的名称,例如:
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
{;
WriteLine(entity.Name);
}
Run Code Online (Sandbox Code Playgroud)
使用正常转换或T4,如何写出实体集的实际名称?(例如,对于Person,它可能是人物 - 但也许我将其更改为设计师中的People,所以我想要那样做).
谢谢!
理查德
小智 15
我正在寻找同一个问题的答案,发现它并不太糟糕.但是,不是获取EntitySet名称,而是使用相同的复数形式非常容易.
在您的文本模板中,可能位于顶部,添加以下行:
<#@ assembly name="System.Data.Entity.Design" #>
<#@import namespace="System.Data.Entity.Design.PluralizationServices" #>
Run Code Online (Sandbox Code Playgroud)
这允许您创建一个多元化器实例:
<# PluralizationService pluralizer = PluralizationService.CreateService(System.Globalization.CultureInfo.CurrentCulture); #>
Run Code Online (Sandbox Code Playgroud)
然后在模板中复数一个实体,只需使用:
<#=pluralizer.Pluralize(code.Escape(entity))#>
Run Code Online (Sandbox Code Playgroud)
当然,您可以code.Escape(entity)使用存储实体名称的变量名称替换.
就是这样!
来源:
在t4模板中可以导入哪些库有任何限制吗?
http://vthornheart.railsplayground.net/blog/archives/655
小智 5
从"CreateEdmItemCollection"方法获取"ItemCollection"后,获取默认的Entity Container,您可以从中获取EntitySet名称...
EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile);
EntityContainer container = ItemCollection.GetItems<EntityContainer>().FirstOrDefault();
foreach (EntityType entity in ItemCollection.GetItems<EntityType>().OrderBy(e => e.Name))
{
EntitySetBase entitySet = container.BaseEntitySets.FirstOrDefault(set => set.ElementType == entity);
string pluralizedName = entitySet.Name; //<--- Pluralized Name extracted
}
Run Code Online (Sandbox Code Playgroud)