Использование IDENTITY_INSERT с EF4 - PullRequest
12 голосов
/ 26 июля 2010

Я пытаюсь создать в БД запись с предопределенным значением первичного ключа. Я знаю, как сделать это с помощью sql, но мне было интересно, может ли EF сделать это для меня? В противном случае мне придется создать сохраненный процесс для вставок.

1 Ответ

12 голосов
/ 26 июля 2010

Если для вашей сущности установлен атрибут StoreGeneratedPattern, установленный на "Нет" , то значение ключа сущности, которое вы укажете для него, будет передано в базу данных.

В случае, если для этого атрибута установлено значение «Идентичность» или «Вычислено» , невозможно контролировать, какое значение будет установлено для этого столбца в БД.

Таким образом, если в вашей базе данных есть столбец с автоинкрементом, а мастер ADO.NET Entity Data Model установил для вас StoreGeneratedPattern, вы можете вручную изменить этот атрибут на "Нет" в части модели SSDL с помощью XML Editor, а затем включите IDENTITY_INSERT.

Вы можете использовать метод ObjectContext.ExecuteStoreCommand, если вы используете EF4 или использовать свойство ObjectContext.Connection.StoreConnection для выполнения команды SQL SET IDENTITY_INSERT <Your_Table> ON (как в EF1, так и в EF v4).

...