На этом сайте было множество вопросов, связанных с поиском IDENTITY после выполнения вставки. Способ получения идентификатора заключается в том, чтобы сделать вызов ниже, сразу после вызова SaveChanges ();
context.MyClass.OrderByDescending(c => c.Id).FirstOrDefault();
Это, кажется, работает последовательно, может быть вполне адекватным; тем не менее, он имеет видимость возникновения ошибки, если между вызовами будет добавлена еще одна запись. Таким образом, первый вопрос, учитывая, что EF работает в трансациональном контексте, является ли этот метод надежным?
Во-вторых, ответ на следующий вопрос предполагает, что может быть лучший способ.
Linq to SQL - Как найти значение столбца IDENTITY после InsertOnSubmit ()
В этом ответе после вызова SubmitChanges () следующий вызов (где "tst" представляет класс пользователя) возвращает значение.
Response.Write("id:" + tst.id.ToString)
Похоже, что это работает точно так же в LINQ to Entities, где после вызова для сохранения изменений экземпляр класса теперь включает идентификатор.
context.MyClass.Add(myClass);
context.SaveChanges();
int myNewIdentity = myClass.Id;
Поскольку мы запрашиваем фактический идентификатор экземпляра класса (фактическую запись), он может показаться отказоустойчивым. И кажется логичным, что разработчики EF должны предоставить такую базовую функциональность. Может ли кто-нибудь подтвердить, что это правильный способ получить личность или хотя бы лучшую практику?