1

过去,当我使用 Oracle 和实体框架(数据库优先)时,我手动调整了模型(默认为大写蛇形),以便实体名称和属性名称使用传统的 PascalCase。这种手动编辑没问题,因为到目前为止我建模的模式相当小。

但是我将开始一个具有非常大架构的项目,我无法想象花费所有时间手动调整数百个表的所有内容。我也无法忍受使用默认的上蛇形外壳的想法。我认为大多数 C# 开发人员都会同意它非常令人反感。

我没有使用 T4 的经验,但似乎这种事情应该不是很困难。但也许我错了,因为 Google 无法帮助我找到任何帕斯卡大小写模板。任何人都可以分享一个转换大小写约定的 .t4 文件,或者指出一个可以帮助我自己编写的方向吗?

4

1 回答 1

1

在 T4 中,您可以使用“类功能”来包含您自己的自定义辅助函数等。像这样的东西:

<#+
public String ConvertToPascalCase(string allCaps){
   CultureInfo cultureInfo = CultureInfo.InvariantCulture;
   TextInfo textInfo = cultureInfo.TextInfo;

   return textInfo.ToTitleCase(allCaps.ToLower()).Replace("_", "");
}
#>

并使用该辅助函数在 EF中创建您的自定义映射。

原答案:

使用TextInfo.ToTitleCase

//your current culture
//CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture;
//or invariant culture, made no difference for me...
CultureInfo cultureInfo = CultureInfo.InvariantCulture;
TextInfo textInfo = cultureInfo.TextInfo;

string allCaps = "THIS_IS_ORACLE";

var result = textInfo.ToTitleCase(allCaps.ToLower()).Replace("_", "");

result.Dump();//tried it in LINQPad, result: "ThisIsOracle"
于 2012-07-08T21:37:54.963 回答