Один указывает явный Первичный ключ , другой указывает, что это должно быть поле идентификации в этой базе данных (зависит от поставщика). Во многих случаях ключом будет поле идентификатора.
DatabaseGeneratedOption.Identity
Вы можете пометить неключевые (неидентифицированные) свойства как DB свойства с использованием опции DatabaseGeneratedOption.Identity . Это указывает, что значение свойства будет сгенерировано базой данных в операторе INSERT. Это свойство Identity не может быть обновлено.
Обратите внимание, что способ, которым значение свойства Identity будет сгенерировано базой данных, зависит от поставщика базы данных. Это может быть личность, версия строки или GUID. SQL Сервер создает столбец идентификаторов для целочисленного свойства.
Атрибут ключа
Атрибут ключа можно применить к свойству в классе сущности сделать его ключевым свойством и соответствующим столбцом для столбца PrimaryKey в базе данных. Соглашение по умолчанию создает столбец первичного ключа для свойства с именем Id или Id. Атрибут Key переопределяет это соглашение по умолчанию.
Если вы хотите указать первичный ключ без идентификатора, вы можете использовать что-то вроде этого
[Key, DatabaseGenerated(DatabaseGeneratedOption.None)]