Подтвердить что ты не робот

Как найти идентификатор последней вставленной строки в Entity Framework?

Я вставляю данные в несколько таблиц. Мне нужно знать последний вставленный (автоинкрементный) ID в таблице. Мне нужно использовать его как ключ Foriegn в другой таблице.

Короче, мне нужна альтернатива @@Identity в T-Sql.

4b9b3361

Ответ 1

Entity Framework автоматически загрузит последний вставленный идентификатор для заполнения столбца первичного ключа вставленной сущности:

var customer = new Customer { Name = "Steven" };

context.AddObject(customer);

context.SaveChanges();

var id = customer.Id;

Обратите внимание, что свойство Id заполняется только после вызова SaveChanges() в случае, StoreGeneratedPattern атрибута StoreGeneratedPattern установлено значение "Identity" или "Computed" для столбца идентификатора с автоинкрементным увеличением в части Storage модели.

Ответ 2

В любом случае, если вам нужен идентификатор для какой-либо другой цели... вызов метода EF Insert для некоторого объекта автоматически возвращает текущий вставленный идентификатор строки...

var rowId=db.Insert(Entity); 

Я думаю... plz дайте мне знать, если я ошибаюсь.... m jst новичок в EF..

Ответ 3

Возможно, это поможет:

var erp = new UserDataContext();

string euname = "Ded";

string eupassword = "Moro$ilka";

string eposition = "Moroz";

var status = erp.Database.ExecuteSqlCommand(@"EXEC InsertNewUser @neuname,@neupassword,@neuposition",
new SqlParameter("@neuname",euname),
new SqlParameter("@neupassword",eupassword),
new SqlParameter("@neuposition",eposition)
);

erp.SaveChanges();

int lastid = erp.eusers.Count();