Как упомянуто в своем комментарии @ June7, вам нужно создать 20 операторов обновлений следующим образом
Update AT SET AT.[ColumnName] = UT.[ColumnName]
From UpdateTable UT INNER JOIN ActualTable AT
On AT.Id = UT.Id
WHERE UT.[ColumnName] is not NULL
Как видите, 20 операторов будут почти идентичны, за исключением имени столбца. Это позволяет легко ускорить решение с помощью одной из следующих опций
Вот путь, который старается не касаться базы данных:
В чистом T-SQL можно использовать этот запрос:
select max_length from sys.columns as c inner join sys.objects o on c.object_id = o.object_id where o.name = 'myTable' and c.name = 'myColumn'
Для linq-to-sql Вам нужен он, переписывают в linq.
Отвеченный здесь:
Linq к SQL - базовая длина столбца
Хотя я нашел это более опрятным для изменения:
public static int GetLengthLimit(Type type, string field) //definition changed so we no longer need the object reference
//Type type = obj.GetType(); //comment this line
И использование вызова:
int i = GetLengthLimit(typeof(Pet), "Name");
Кто-либо может думать способа сильно ввести ссылку поля?