linq insert: получение номера строки - PullRequest
2 голосов
/ 03 июня 2011

У меня есть таблица с первичным ключом в качестве столбца идентификации.Я делаю вставку с linq-to-sql, и мне было интересно, есть ли способ вернуть идентификатор вставленной строки и как мы точно знаем, что вставка произошла.

Спасибо за вашпредложения.

Ответы [ 3 ]

2 голосов
/ 03 июня 2011

Свойство первичного ключа сущности, которая использовалась для вставки, будет обновлено после вызова SubmitChanges с идентификатором из базы данных.

Ex:

using (var dc = new MyDataContext())
{
    MyEntity entity = new MyEntity();

    dc.MyEntities.InsertOnSubmit(entity);
    dc.SubmitChanges();

    int pkValue = entity.PKColumn
}
1 голос
/ 03 июня 2011

Идентификатор вставленной записи должен автоматически заполнять объект, который был добавлен в DataContext для вставки. Просто проверьте ID этого объекта.

Кроме того, вы можете посмотреть метод GetChangeSet() на DataContext до , чтобы посмотреть, какие изменения он отслеживал , если вам нужна дополнительная ручная информация о количестве затронутых записей и т. Д.

1 голос
/ 03 июня 2011

С LINQ-to-SQL он автоматически обновляет любые свойства IDENTITY (и т. Д.) Во время сохранения, поэтому просто посмотрите на .Id (или что-то еще).

Зная, что это произошло: обновления и т. Д. Происходятсделка;эта транзакция должна была выйти из метода без исключения.Если у вас есть внешний TransactionScope (или подобный), то это вам решать;короче говоря - пока вы не сделаете коммит, у вас будет фантомная запись.Поэтому не передавайте этот новый идентификатор где-либо, пока не совершите все свои транзакции.

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