Silverlight 与自定义域服务的并发性

Silverlight 与自定义域服务的并发性,silverlight,concurrency,poco,domainservices,Silverlight,Concurrency,Poco,Domainservices,我创建了一个为DomainService继承的类,并且有一个Silverlight应用程序,它使用System.ServiceModel.DomainServices.Client获取DomainContext。我还创建了在DomainServices的查询、更新、插入和删除方法中使用的POCO数据契约。我还有一个执行所有加载操作的ViewModel。现在我在我的应用程序中,我想向生成的EntitySet添加新实体,但不确定当一个用户创建新实体并设置键值时会发生什么;同时,另一个用户创建具有相同

我创建了一个为DomainService继承的类,并且有一个Silverlight应用程序,它使用System.ServiceModel.DomainServices.Client获取DomainContext。我还创建了在DomainServices的查询、更新、插入和删除方法中使用的POCO数据契约。我还有一个执行所有加载操作的ViewModel。现在我在我的应用程序中,我想向生成的EntitySet添加新实体,但不确定当一个用户创建新实体并设置键值时会发生什么;同时,另一个用户创建具有相同键值的类似实体

我在文档中看到使用了ObjectContext,但在我的情况下,我无法使用EntityFramework模型生成器。所以我不得不手工创建我的数据合同


所以我想我的问题是,有没有办法强制其他silverlight应用程序在数据库更改时进行更新?

当您对DomainContext执行保存操作时,根据加载行为,它将自动刷新

TicketContext.Load(TicketContext.GetTicketByIdQuery(ticketId),
                                      LoadBehavior.RefreshCurrent,
                                      x =>
                                        {
                                          Ticket = x.Entities.First();
                                          Ticket.Load();
                                          ((IChangeTracking) TicketContext.EntityContainer).AcceptChanges();
                                        }, null);

在这里,我将LoadBehavior设置为RefreshCurrent。当您进行保存时,RIA将通过连接将实体发送回客户端,并将更改与已缓存在客户端上下文中的实体合并。我不知道这是否完全回答了你的问题

编辑:更简单的问题。。。如上所述,我有一个自定义DomainService,它只是从DomainService继承的。有什么方法可以“刷新”域上下文吗?在正常情况下可以,但我无法使用实体数据模型生成器。所以我并没有一个ObjectContext用于LinqToEntity,所以我发现自己不得不创建很多缺少的功能。但既然这个答案似乎回答了这个问题,我就给它打分。谢谢你的帮助,克里斯。@jhorton我这里没有使用ObjectContext:-)这不是EF的东西。这就是RIA的工作原理,独立于实体框架。无论您是在服务器端使用ADO.NET和POCO还是EF,这都无关紧要。行为是相同的-RIA希望将更改发送回客户端并合并它们(如果您已将刷新设置为当前)。正如您所发现的,如果您不使用EF,您必须自己做很多工作:-)我现在已经用POCO和ADO.NET在服务器端完成了几个项目。一旦你弄清楚RIA希望对数据做什么,情况就不会太糟了。