Ошибка Linq to sql с полем приращения идентификатора

StackOverflow https://stackoverflow.com/questions/358821

  •  21-08-2019
  •  | 
  •  

Вопрос

Я только начал использовать linq to sql и столкнулся с проблемой вставки записи с автоматически увеличивающимся полем.

Я создал новый экземпляр объекта компании, определенного linq.он инициализировал поле автоматического увеличения «companyID» значением 0.InsertOnSubmit() завершается сбоем из-за следующего исключения validOperationException.

Неправильная спецификация автосинх

атрибут столбца IsDbGenerated имеет значение true для свойства CompanyID.Я использую SQL-сервер 2000.

Редактировать:Для автосинхронизации установлено значение OnIsert.Тип данных — BigInt в TSQL, long в C#.

Кто-нибудь знает, почему возникает эта ошибка и как ее можно решить?

Спасибо

Это было полезно?

Решение

Нашел ответ.Это было связано с первичными ключами.В дизайнере linq первичные ключи были настроены так, как и должно быть.В базе данных соответствующие поля не были установлены в качестве первичных ключей.Я исправил ключи в базе данных, и это решило проблему.

Другие советы

Каков тип данных?инт?(int как в TSQL, так и в C#?)

Какая у вас настройка автосинхронизации?Для первичного ключа это должно быть «OnInsert».

Та же проблема.Установка первичного ключа в БД и изменение свойства AutoSync на "OnInsert" На DBML помог

Каково значение свойства «Автосинхронизация» в этом классе/таблице?

Я только что проверил на своей стороне, и там установлено значение «OnInsert».Также для параметра «Автогенерируемое значение» установлено значение true.

Опция «При вставке» устанавливается только при вставке значений в базу данных.Если у вас нет проблем с параметром безопасности базы данных, всегда используйте параметр «Никогда» в базе данных.

Если это возможно, удалите базу данных и создайте заново.Мой случай был, когда я забыл добавить первичный ключ в таблицу.Затем, после того как первая вставка вошла в базу данных, я получил сообщение об отсутствии первичного ключа.Я применил это вручную в дизайнере dbml, но первый идентификатор уже был занят, что вызвало исключение «Неверная автосинхронизация».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top