Я использую EF 4.1, Model First и столкнулся с этой проблемой.Вот как я это решил:
При использовании поверхности конструктора моделей, когда вы создаете сущность, вы должны определить свойство 'Key', по умолчанию используется Id, int32.
В моемВ этой ситуации я решил использовать Guids для Id, поэтому я переключил int32 на Guid.Но если вы изучите этот идентификатор после создания сущности, я обнаружил, что в идентификаторе StoreGeneratedPattern для этого идентификатора был выбран «идентификатор».Сначала я не думал, что это было проблемой, но когда я изучил SQL, используемый для вставки в базу данных, было немного странно, что он не отправлял мой идентификатор. Разочарование!
Но как только я вернулся и изменил «StoreGeneratedPattern» с «identity» на «none», восстановил БД и перестроил проект, это странное {«Cannot»вставьте значение NULL в столбец 'Id', таблица 'TestDB.dbo.BOB'; столбец не допускает нулевые значения. INSERT завершается неудачно. \ r \ nОтношение завершено. "} перестал выполняться.
FYI - при просмотре sql еще кажется, что если у вас выбрано «identity» для «StoreGeneratedPattern», EF сохраняет объект в db (sans Id), а затем сразу же возвращает идентификатор и сохраняет его обратно в ваш объект,то есть этот выбор для StoreGeneratedPattern опирается на БД для генерации вашего идентификатора, НЕ вашего кода!