Как получить записи, затронутые обновлением хранимой процедуры в LINQ to SQL

Я выполняю хранимую процедуру обновления из LINQ to SQL, и мне нужно знать, какие записи затронуты после вызова обновления.

Я использую конструктор dbml для генерации кода LINQ.

4 ответа

Решение

Я не пробовал ни одного из ответов и не знаю, какой из них правильный. я вернулся @@rowcount как результат набора.

Вы пробовали DataContext.GetChangeSet? Например, это возвращает количество обновлений:

linqDbContenxt.GetChangeSet().Updates.Count

Вы можете создать другой частичный класс для каждого типа объекта в вашем dbml и подключиться к различным открытым методам, таким как OnCreated и т. Д. Вы можете создать свой собственный при обновлении и вести журнал элементов, измененных, созданных или удаленных, так как они происходят с реальными объектами.

Один из способов сделать это - записать строки, обновленные в таблицу, а затем снова прочитать таблицу с помощью Linq-to-SQL:

UPDATE dbo.YourTable
SET columns = values
OUTPUT INSERTED.ID, INSERTED.column1, INSERTED.column2   -- etc. whatever you need
INTO dbo.OutputTable(.....) 

Конечно, вы должны создать это dbo.OutputTable перед рукой. После выполнения этой операции ваша выходная таблица будет содержать значения, которые были обновлены. Вы можете читать эту таблицу как любую обычную таблицу в Linq-to-SQL.

Другие вопросы по тегам