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