Как найти идентификатор последней вставленной строки в Entity Framework?
Я вставляю данные в несколько таблиц. Мне нужно знать последний вставленный (автоинкрементный) ID в таблице. Мне нужно использовать его как ключ Foriegn в другой таблице.
Короче, мне нужна альтернатива @@Identity в T-Sql.
Ответ 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();