简短的故事是我希望能够将IEnumerable分配给我的Context.Customers属性(这是从System.Data.Linq.Table类型的SQL导入的表; Customer是实体类型)。
现在你可能首先想到的是'你为什么要这样做?'是的,通常有更好的方法来做到这一点,但我不是在一般情况下运作。对我的项目的限制意味着我无法访问项目的“web”部分。因此,我将使用IIS中托管的WCF服务来实现此目的。此服务保存DataContext对象并调用数据库,并与Silverlight应用程序通信。
Silverlight应用程序调用GetCustomersAsynch,然后等待已完成的事件,此时它可以使用Customer实体的集合。我的问题是提交这些更改。我可以将更改后的集合发送回WCF服务,但DataContext对象的“Customers”属性是只读的,所以我不能只将其中一个分配给另一个。我不能只是一对一地写它们,因为可能添加了一个新条目(或者,可能是新条目)。我想要的是使用传递的集合更新DataContext的Customers属性,然后我将在DataContext上调用Submit以将更改提交给数据库。
如果有人有任何建议或想法,请告诉我。
提前致谢。
答案 0 :(得分:0)
您可以在WCF服务中使用静态DataContext,但通常不鼓励使用。然后将整个对象从Silverlight发送到WCF服务方法。在WCF服务方法内,调用staticCtx.UpdateObject(customer);和SubmitChanges()。如果使用相同的staticCtx加载客户对象,则UpdateObject会将状态更改为已更改,并且submitChanges将通过引擎将其发送以将其转换为更新SQL。静态上下文可能有几个副作用,所以要小心。
另一种选择是使用WCF数据服务或WCF RIA服务(L2S工作)和实体框架。然后,您可以在客户端上调用SubmitChanges并使用LINQ从客户端进行查询。
以下是可用的one of many RIA Services文章和WCF Data Services的文章。如何在两者之间做出选择有很多考虑因素。