Я пытаюсь реализовать функциональность в контексте домена моего клиента, где я хочу работать с каждой из записей базы данных, прежде чем они будут отправлены клиенту.Чтобы создать простую иллюстрацию, предположим, что я хотел изменить поле в своей таблице клиентов с именем LastAccessed и установить его с текущим DateTime.Вот что я попробовал в своем классе обслуживания домена:
public IQueryable<Customer> GetCustomers()
{
foreach (Customer c in this.DataContext.Customers)
{
c.LastAccessed = DateTime.Now;
}
DataContext.SubmitChanges();
return this.DataContext.Customers;
}
Этот тип работы работает, потому что он обновляет дату LastAccessed до того, как запись возвращается клиенту, но обновляет ВСЕ записи клиента, а не толькоклиент запрашивает.В моем приложении Silverlight на стороне клиента я применяю запрос, но при использовании отладки во время выполнения я вижу, что он обновляет всех клиентов, однако, поскольку я использую запрос только на стороне клиента, только запрошенные клиенты возвращаются и передаются по проводам.
Если я смотрю свою базу данных с помощью SQL-профилировщика, я вижу, что он фактически запрашивает все записи, а затем запрашивает только запрашиваемые записи.Так, где бы я перехватил возвращаемые записи и обновил только их время LastAccessed.
Итак, в двух словах, мне нужно найти способ получить доступ только к тем записям, которые будут в конечном итоге возвращены, и на этом этапе в коде, который яКажется, есть весь стол.Я знаю, что могу передать конкретный идентификатор клиента и запрос, а затем работать с этими результатами, но я хочу, чтобы запрос получал гибкость от клиента, чтобы, если они заполняют сетку на основе некоторых критериев поиска, таких как "State ==«NY» - все записи, возвращаемые для заполнения результатов сетки, приводят к обновлению поля LastAccessed.Любая помощь будет оценена!Спасибо!