Я пытаюсь создать запись в db, которая имеет предопределенное значение первичного ключа. Я знаю, как это сделать с помощью sql, но мне было интересно, может ли EF сделать это для меня? В противном случае мне придется создать хранимую процедуру для вставок.
Использование IDENTITY_INSERT с EF4
Ответ 1
Если у вашего атрибута StoreGeneratedPattern
установлено значение "Нет" для вашей сущности, значение ключа Entity Key, указанное для него, будет передано в базу данных.
Если этот атрибут установлен как "Идентификация" или "Вычислен" , невозможно определить, какое значение будет установлено для этого столбца в БД.
Итак, если у вас есть автоматически увеличиваемый столбец в вашей базе данных, и мастер модели данных Entity Data ADO.NET установил для вас StoreGeneratedPattern
, вы можете вручную изменить этот атрибут на "Нет" в части SSDL модели с использованием редактора XML, а затем включите IDENTITY_INSERT
.
Вы можете использовать метод ObjectContext.ExecuteStoreCommand
, если вы используете EF4 или используете свойство ObjectContext.Connection.StoreConnection
для выполнения команды SQL SET IDENTITY_INSERT <Your_Table> ON
(как в EF1, так и в EF v4).