Получите макс. длину для “строкового” столбца с помощью LINQ для SQL

Как упомянуто в своем комментарии @ 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 операторов будут почти идентичны, за исключением имени столбца. Это позволяет легко ускорить решение с помощью одной из следующих опций

  • Создать динамический SQL-запрос, которому вы передаете имя столбца из своего кода
  • Скопируйте и вставьте тот же запрос 20 раз в текстовый редактор и просто заменить имя столбца
6
задан Luke Girvin 30 September 2011 в 11:53
поделиться

3 ответа

Вот путь, который старается не касаться базы данных:

  • Используя Отражение, получите свойство класса объекта, который соответствует рассматриваемому столбцу.
  • Затем получите Систему. Данные. Linq. Отображение. Атрибут столбца свойства.
  • Затем проанализируйте свойство DbType этого атрибута (например, NVarChar (255) NOT NULL) для получения длины столбца.
4
ответ дан 17 December 2019 в 00:16
поделиться

В чистом 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.

1
ответ дан 17 December 2019 в 00:16
поделиться

Отвеченный здесь:

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");

Кто-либо может думать способа сильно ввести ссылку поля?

1
ответ дан 17 December 2019 в 00:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: