Если свойство объекта является Identity
(автоинкрементное значение) в базе данных, оно указывается в StorageModel вашей модели объекта. Возможно, этот параметр не подходит для вашей конкретной области. Вы можете проверить это, открыв файл edmx вашей модели и заглянув в раздел StorageModels
. Это должно выглядеть так:
<edmx:StorageModels>
...
<EntityType Name="MyClass">
<Key>
<PropertyRef Name="ID" />
</Key>
<Property Name="ID" Type="..." Nullable="..." StoreGeneratedPattern="Identity" />
...
</EntityType>
...
</edmx:StorageModels>
StoreGeneratedPattern
должно быть установлено на Identity
. Если есть None
или атрибут отсутствует (по умолчанию None
), вы действительно получите ошибку, которую вы описали, поскольку EntityFramework в этом случае не знает, что ID
является идентификатором, и выдаст значение для столбца в сгенерированном операторе SQL-INSERT.
(Убедитесь, что вы действительно проверяете раздел edmx:StorageModels
в файле edmx. Раздел edmx:ConceptualModels
также имеет атрибут annotation:StoreGeneratedPattern
в свойстве, но его настройка не имеет значения для вашей конкретной проблемы. (I думаю, что это важно только тогда, когда база данных создается из модели, но я не уверен.))