使用RIA服务丢弃Silverlight 5客户端中已删除的记录

本文关键字:删除 记录 客户端 服务 RIA Silverlight 使用 | 更新日期: 2023-09-27 18:15:32

我们有一个Silverlight 5应用程序。我们在数据库中有两个表通过一个链接表链接起来。例如,Event和User是主表,EventToUser是链接表。用户可以将用户添加到事件中,即谁可以接收/引发此事件。

问题是:客户端A打开一个现有的事件,并向其中添加一个用户'Bob'。客户端B打开相同的事件,看到用户Bob被添加到其中。客户B还在此事件中添加了另一个用户'Fred'。

两个客户端都可以看到用户'Bob'和用户'Fred'被添加到此事件中。客户B决定从事件中删除用户'Bob'。当通过RIA服务重新加载数据时,客户端A仍然看到用户'Bob'。调试时,我发现在服务器端,正确的数据被返回,但当它回到客户端(回调函数),链接表仍然有删除的数据,即用户'Bob'仍然链接到事件。

我试图在客户端清除上下文上的链接表,但无济于事。我不知道还能做什么。我已经将loadbehavior设置为"RefreshCurrent"。谁能提出一个解决方案,我将非常感激。

问候,

纳西尔。

使用RIA服务丢弃Silverlight 5客户端中已删除的记录

在您的客户端上下文中,您应该这样做:

SubjectContext.EntityContainer.GetEntitySet<Event>().Clear();
SubjectContext.EntityContainer.GetEntitySet<User>().Clear();
SubjectContext.EntityContainer.GetEntitySet<EventToUser>().Clear();

…在执行查询之前,如果每次都重用上下文而不是创建新的客户机上下文。这是因为客户端上下文仍将包含已从db中删除的项。

在我们的代码中也有这样的东西:

this.SubjectContext.Events.Clear();