Я пытаюсь создать запись в дб, который имеет предопределенное значение первичного ключа. Я знаю, как сделать это с sql, но я задавался вопросом, может ли EF сделать это для меня? Иначе я должен буду создать сохраненный proc для вставок.
В случае если атрибут StoreGeneratedPattern
установлен в "None" для вашей сущности, в базу данных будет передано значение Entity Key, которое вы для нее указали.
В случае, если этот атрибут установлен либо в "Identity", либо в "Computed", нет возможности контролировать, какое значение будет установлено для этого столбца в БД.
Поэтому, если у вас в базе данных есть автоинкрементный столбец, и мастер ADO.NET Entity Data Model установил для вас StoreGeneratedPattern
, вы можете вручную изменить этот атрибут на "None" в SSDL-части модели с помощью XML Editor, а затем включить IDENTITY_INSERT
.
Вы можете использовать метод ObjectContext.ExecuteStoreCommand
если вы используете EF4 или использовать свойство ObjectContext.Connection.StoreConnection
для выполнения SQL команды SET IDENTITY_INSERT
(как в EF1, так и в EF v4).