Entity Framework 4 получает идентификатор первичного ключа для вставленной записи - PullRequest
35 голосов
/ 24 июня 2011

Я использую Entity Framework для вставки строки в базу данных sql. Если бы я использовал хранимую процедуру, я мог бы вернуть первичный ключ для записи, которую я вставил.

Могу ли я вернуть PK для последней моей последней записи, вставленной с использованием Entity Framework?

Ответы [ 3 ]

40 голосов
/ 24 июня 2011

После того, как вы вставили сущность, она должна была быть обновлена, чтобы свойство, сопоставленное первичному ключу в базе данных, имело новое значение PK.

29 голосов
/ 24 июня 2011

Да, конечно, вы можете сделать это. Смотрите пример:

int id = 0;

using (PC2Entities objectContext = new PC2Entities())
{
   objectContext.ClientContacts.AddObject(clientContact);
   objectContext.SaveChanges();
   id = clientContact.Id;

   transaction.Complete();
}

id - это ПК.

0 голосов
/ 27 мая 2015

Для Oracle.ManagedDataAccess.EntityFramework (версия 6.121 или старше)

Если вы по-прежнему не получаете идентификатор после вставки, добавьте этот атрибут в свойство первичного ключа.

[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
 public string ID { get; set; }

Я должен был сделать это, не знаю почему, может быть потому, что я использую оракул, а структура сущностей не в восторге от этого.

Редактировать: я вижу, что за этот ответ проголосовали, и я знаю почему, потому что последняя версия ODAP не требует от вас установки [DatabaseGenerated (DatabaseGeneratedOption.Identity)]. Но это было верно для более старых версий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...