【问题标题】:Discard Deleted records in Silverlight 5 client using RIA services使用 RIA 服务丢弃 Silverlight 5 客户端中的已删除记录
【发布时间】:2014-07-29 16:43:48
【问题描述】:

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

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

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

我试图清除客户端上下文中的链接表,但无济于事。 我不知道还能做什么。我已将 LoadBehviour 设置为“RefreshCurrent”。 有人可以提出解决方案吗,我将不胜感激。

问候,

纳西尔。

【问题讨论】:

  • 你在这个数据库访问部分使用什么 - 实体框架或其他什么?
  • 是的,我们正在使用带有 RIA 服务的实体框架

标签: c# silverlight sql-server-2012 ria


【解决方案1】:

在您的客户端上下文中,您应该执行以下操作:

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

...在进行查询之前,如果您正在重用您的上下文而不是每次都创建一个新的客户端上下文。这是因为客户端上下文仍将包含已从数据库中删除的项目。

我们的代码中也有类似的东西:

this.SubjectContext.Events.Clear();

...但我不是 100% 了解两者之间的区别。

【讨论】:

  • 谢谢,我最终重新初始化了上下文以重新开始。请注意,这种重新初始化仅在模块加载时发生,所以在我的情况下,这样做是可以接受的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多