Итак, используя EF4, я запускаю поисковый запрос, который заканчивается этой общей функцией:
query = query.Skip(5).Take(10);
В этих записях в базе данных есть столбец ImpressionCount, который я намерен использовать для подсчета количества раз, которое каждая запись отображается на странице результатов поиска.
Какой самый эффективный способ сделать это? В общем, я просто собираюсь посмотреть на набор результатов, получить список идентификаторов и затем снова попасть в базу данных, используя ADO.NET, чтобы сделать что-то вроде:
UPDATE TableName SET ImpressionCount = ImpressionCount + 1 WHERE Id IN (1,2,3,4,5,6,7,8,9,10)
Кажется достаточно простым, просто интересно, есть ли более .NET 4 / Linq-иш способ сделать это, о котором я не думаю. Тот, который не связан с другим попаданием в базу данных, тоже подойдет. :)
РЕДАКТИРОВАТЬ : Итак, я склоняюсь к ответу IAbstract в качестве ответа, так как не кажется, что для этого есть «встроенный» способ. Я не думал, что было, но это никогда не повредит спросить. Тем не менее, единственный другой вопрос, который я хочу отбросить, это: можно ли написать SQL-триггер, который мог бы работать только с этим конкретным запросом? Я не хочу, чтобы ImpressionCount обновлялся в КАЖДОМ утверждении выбора для записи (например, когда кто-то просматривает страницу сведений, это не впечатление - если администратор редактирует запись в бэкэнде, это не впечатление) ... можно использовать LINQ или нет?
SQL Server каким-то образом должен был бы быть в состоянии определить, что запрос был сгенерирован этой командой Linq, не уверен, возможно ли это или нет. Этот сайт ожидает относительно большой трафик, поэтому я просто пытаюсь оптимизировать, где это возможно, но если это излишне, я мог бы просто пойти и снова попасть в базу данных один раз для каждой страницы результатов.