В своих внутренних элементах LINQ-to-SQL использует язык SQL.Когда он создает таблицы, если вы регистрируете свой SQL Server, вы увидите операторы SQL, например, ALTER TABLE ADD COLUMN ...
ADD COLUMN не позволяет устанавливать позицию столбца.В более общем смысле, SQL (язык, будь то Oracle, MySQL или SQLServer) не предоставляет инструментов для управления положением столбцов, поэтому порядок столбцов зависит только от порядка их создания.
Такое поведение предназначено.Вы не должны полагаться на порядок столбцов никогда.Большинство платформ доступа к данным явно рекомендуют это, и они не гарантируют постоянство порядка столбцов, которые у вас есть в любой точке.
Кроме того, в вашем случае вы используете LINQ-to-SQL, поэтомуесли вы не собираетесь использовать его гибридным способом (то есть также выполнять команды SQL напрямую), порядок не будет иметь значения, поскольку вы будете получать доступ к столбцам через соответствующие именованные свойства.
Итак, если вы действительно используете его вгибридный способ, обязательно всегда указывайте имена столбцов при выполнении SqlCommands.Не пишите INSERT INTO MYTABLE VALUES (1,2,3)
, пишите вместо INSERT INTO MYTABLE(COL1, COL2, COL3) VALUES (1,2,3)
.
Кроме того, я не совсем понимаю, почему вы говорите, что собираетесь использовать порядок, поскольку имеется 30 столбцов.Во-первых, 30 не является высоким (равно как и 20 таблиц), а во-вторых, если они могут быть вызваны по их положению (например, ADDRESS1, ADDRESS2, ADDRESS3), это обычно означает, что структура базы данных имеет недостатки.См 1-я нормальная форма .