Я не уверен, сработает ли это, но вы можете попробовать. Это немного больно, но я заставил ее уйти.
Шаг 1
В settings.ttinclude есть функция
string CleanUp (строка tableName)
Создайте новый под ним вот так (добавив любой алгоритм расширения / переименования, который вам нравится
string CleanUp (строка colName, строка tableName) {
string result=colName;
//strip blanks
result=result.Replace(" ","");
//put your logic here...
if (result.ToLower() == tableName.ToLower())
{
result = colName + "X";
}
return result;
}
Шаг 2
В SQLServer.ttinclude (или эквивалентном файле для вашего источника данных) примерно в строке 167 есть строка вроде:
col.CleanName = CleanUp (col.Name);
Измените это на:
col.CleanName = CleanUp (col.Name, tbl.Name);
Шаг 3
Вот где действительно начинается боль. Захватите исходный код для SubSonic.Core (Да :() и в DatabaseTable.cs измените
public IColumn GetColumnByPropertyName(string PropertyName)
до
public virtual IColumn GetColumnByPropertyName(string PropertyName)
Шаг 4
В Structs.tt после
открытая статическая строка <# = col.CleanName #> Column {
получить{
return "<# = col.Name #>";
}
}
добавить следующее
<# if (col.CleanName! = Col.Name) {#>
public override IColumn GetColumnByPropertyName(string columName){
if (columName == "<#= col.CleanName #>")
return <#=col.CleanName#>;
else
return base.GetColumnByPropertyName(columName);
}
<#} #>
После этого вам, вероятно, потребуется восстановить все файлы .cs.