CodeSmith 內建模板多針對 SQL Server 設計。Oracle 命名慣例常使用底線分隔(如 CUSTOMER_NAME),而 .NET 命名規範推薦 PascalCase(CustomerName)。直接套用模板產出的實體類別屬性將保留底線,不符合團隊編碼標準。
在 CodeSmith 模板(.cst)中加入轉換函數,於產生類別名稱、屬性名稱時呼叫。
_ 分割字串。<script runat="template">
public string GetFixName(string strVal)
{
string strReturnVal = "";
string[] strVals = strVal.Split('_');
foreach (string str in strVals)
{
if (str.Length > 0)
strReturnVal += str.Substring(0, 1).ToUpper() + str.Substring(1).ToLower();
}
return strReturnVal;
}
</script>
<%= GetFixName(Table.Name) %> // 產生類別名
<%= GetFixName(Column.Name) %> // 產生屬性名
| Oracle 原始名稱 | 轉換後 |
|---|---|
| CUSTOMER_INFO | CustomerInfo |
| ORDER_ID | OrderId |
| CREATE_DATE_TIME | CreateDateTime |
| SYS_USER_ROLE_MAP | SysUserRoleMap |
ID、URL)需保持大寫,可擴充函數加入字典排除表。Property 設定,讓使用者可選擇是否啟用轉換。ORDER → OrderEntity)。