【发布时间】:2010-06-25 18:53:57
【问题描述】:
我正在尝试在我的客户端域上下文中实现功能,我希望在将每个数据库记录发送到客户端之前处理它们。为了创建一个简单的插图,假设我想更改我的客户表上名为 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 时间。
因此,简而言之,我需要找到一种方法来仅访问最终将返回的记录,并且此时在代码中我似乎拥有整个表。我知道我可以传入一个特定的客户 ID 并进行查询,然后使用这些结果,但我希望查询的灵活性来自客户端,这样如果他们根据某些搜索条件(例如“State ==”)填充网格'NY'" 为填充网格结果而返回的所有记录都会导致 LastAccessed 字段更新。 任何帮助,将不胜感激!谢谢!
【问题讨论】:
标签: silverlight wcf-ria-services