В наших таблицах есть несколько столбцов, которые не являются удобными для пользователя именами, поэтому мы меняем их в реальном графическом интерфейсе.
Например, столбец в базе данных помечен как «IntAmt», но у пользователя нет подсказки, поэтому в программе мы называем этот столбец «Сумма процентов».
Проблема в том, что если я использую прямое сопоставление столбцов, как показано ниже, то произойдет ошибка, поскольку эти столбцы не совпадают. В базе данных нет столбца с именем "InterestAmount"
Так есть ли способ, которым я могу ссылаться на правильное имя столбца в отображении с аннотациями или что-то в этом роде? Мы также используем Entity Framework.
var connection = DbContext.Database.Connection.ConnectionString;
using (SqlConnection sqc = new SqlConnection(connection))
{
sqc.Open();
using (SqlBulkCopy bcp = new SqlBulkCopy(sqc))
{
bcp.DestinationTableName = strTargetTable;
sourceData.Columns.Cast<DataColumn>().ToList().ForEach(x =>
bcp.ColumnMappings
.Add(new SqlBulkCopyColumnMapping(x.ColumnName, x.ColumnName)));
bcp.BatchSize = 50000;
bcp.BulkCopyTimeout = 12000;
bcp.WriteToServer(sourceData);
}
sqc.Close();
}
После дальнейшего исследования в таблице хранятся сопоставления столбцов, поэтому таблица выглядит следующим образом
TableName: ColumnMappingTable
[ColumnName] [GuiColumnName]
IntAmt InterestAmount
PrinAmt PrincipalAmount
Так что, как говорится, есть способ, которым я могу отображать этот путь динамически?
У нас есть много таблиц, и жесткое кодирование, отображающее каждое имя отдельно в коде, заняло бы много времени