Сбой INSERT в базе данных EF 4.1 Code First - PullRequest
1 голос
/ 26 мая 2011

Я использую Visual Studio 2010 с пакетом обновления 1 (SP1) с обновлением инструментов MVC3 и EF 4.1 Code First для создания базы данных моего приложения.

Операции базы данных CRUD прекрасно работают при локальном тестировании и в локальной базе данных. Только после того, как я перенесу базу данных на SQL Server 2008 R2 веб-хоста и нацелился на эту размещенную базу данных в строке подключения, все операции INSERT завершатся неудачно.

Всякий раз, когда я пытаюсь добавить новую запись, я получаю эту ошибку: [I] Невозможно вставить значение NULL в столбец 'Id', таблица 'DB_23378_bloomlmsdata.dbo.Courses'; столбец не допускает пустых значений. Вставить не удается. Заявление было прекращено. [/ I]

Все мои модели данных указывают первичный идентификационный ключ следующим образом:

[Key]
public int Id {get; set;}
...

И в локальной базе данных, которая получает поддержку, я вижу необнуляемый первичный ключ идентификации в каждой таблице.

Я где-то читал, что Entity Framework при выполнении операции INSERT для базы данных сначала попытается вставить запись с нулевым значением в качестве Первичного ключа. Я не знаю, как отменить это поведение. Кроме того, это, кажется, не является общей проблемой, и люди обычно сталкиваются с этим, когда они используют что-то отличное от ключа IDENTITY. Для справки, у меня была та же проблема с EF CodeFirst CTP5 до выхода EF 4.1.

Я занимаюсь устранением неполадок в течение 4 недель. Мой веб-хостинг обновил технологию, которую я использую в своем приложении и базе данных. Когда я пытаюсь получить помощь, они говорят мне, что это проблема кодирования, но мой код проверен. Любые идеи будут с благодарностью.

1 Ответ

0 голосов
/ 10 августа 2011

Проверьте свойство IsIdentity столбца Id, для него должно быть установлено значение yes. EF не передает значение для столбца идентификации на вставке, поскольку оно должно автоматически генерироваться базой данных.

...