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

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

Я создал новый экземпляр объекта компании, определенный linq. оно инициализировало поле с автоматическим приращением 'companyID' равным 0. Сбой InsertOnSubmit () со следующим недопустимым значением invalidOperationException.

Неправильная спецификация автосинхронизации для участника 'companyID'

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

Изменить: Автосинхронизация установлена ​​на OnIsert. Тип данных BigInt в TSQL, длинный в c #.

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

Спасибо

11.12.2008 09:45:31
6 ОТВЕТОВ

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

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

1
11.12.2008 09:59:12

Что такое тип данных? Int? (как в TSQL, так и в C #?)

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

3
11.12.2008 09:59:42
РЕШЕНИЕ

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

9
11.12.2008 10:30:48
Похоже, вы редактировали файл L2S вручную. Я бы порекомендовал всегда автоматически генерировать файл из вашей базы данных (используя sql metal или конструктор). Как вы видите, его редактирование напрямую допускает возникновение несоответствий.
jeremcc 20.02.2009 04:30:35

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

2
22.05.2012 22:41:53

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

1
19.11.2012 08:25:42

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

0
6.11.2013 14:03:17