DataContext对象并分配其属性

本文关键字:属性 分配 对象 DataContext | 更新日期: 2023-09-27 18:16:23

简短的故事是,我希望能够分配一个IEnumerable到我的上下文。客户属性(从System.Data.Linq.Table类型的SQL导入的表);客户为实体类型)。

现在你可能想知道的第一件事是"你为什么要这样做?"是的,通常有更好的方法来做这件事,但我不是在一般情况下操作。对我的项目的限制意味着我不能访问项目的"网络"部分。因此,我将使用托管在IIS中的WCF服务来进行此操作。该服务持有DataContext对象并对数据库进行调用,它与Silverlight应用程序通信。

Silverlight应用程序调用getcustomerasynch,然后等待完成的事件,此时它可以使用一个Customer实体集合。我的问题是关于提交这些更改。我可以将修改后的集合发送回WCF服务,但是DataContext对象的"Customers"属性是只读的,所以我不能将一个分配给另一个。我也不能把它们写成1对1,因为可能会增加一个新项(或者,可能会增加一个新项)。我想要的是用传递的集合更新DataContext的Customers属性,然后我将在DataContext上调用Submit将更改提交到数据库。

如果有人有任何建议或想法,请告诉我。

DataContext对象并分配其属性

您可以在WCF服务中使用静态DataContext,尽管通常不鼓励这样做。然后将整个对象从Silverlight发送到WCF服务方法。在WCF服务方法中,调用staticCtx.UpdateObject(customer);和SubmitChanges()。如果您用相同的staticCtx加载客户对象,那么UpdateObject将把状态更改为changed,而submitChanges将把它通过引擎发送,将其转换为update SQL。静态上下文可能有一些副作用,所以要小心。

另一个选择是使用WCF数据服务或WCF RIA服务(L2S works)和实体框架。然后你可以在客户端调用SubmitChanges,并使用LINQ从客户端进行查询。

这是许多RIA服务文章中的一篇,其中一篇是针对WCF数据服务的。如何在两者之间做出选择需要考虑很多因素。