【问题标题】:The DataContext object and assigning its propertiesDataContext 对象并分配其属性
【发布时间】:2011-12-02 16:11:35
【问题描述】:

简短的故事是,我希望能够将 IEnumerable 分配给我的 Context.Customers 属性(这是从 SQL 类型的 System.Data.Linq.Table 导入的表;客户是实体类型)。

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

Silverlight 应用程序调用 GetCustomersAsynch,然后等待完成的事件,此时它可以使用客户实体的集合。我的问题是关于提交这些更改。我可以将更改后的集合发送回 WCF 服务,但 DataContext 对象的“客户”属性是只读的,因此我不能只将一个分配给另一个。我也不能将它们一一写出来,因为可能已经添加了一个新条目(或者,可能是新条目)。我想要的是使用传递的集合更新 DataContext 的 Customers 属性,然后我将在 DataContext 上调用 Submit 以将更改提交到数据库。

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

提前致谢。

【问题讨论】:

  • 您使用的是 WCF RIA 服务、WCF 数据服务,还是只是普通的 WCF 服务?
  • 我不明白你在做什么。 DataContext 应该是 System.Data.Linq.DataContext 类,不是吗?但如果是这样,如果 Silverlight 不支持 LINQ to SQL,你怎么能在 Silverlight 代码中使用它呢?您不应该能够添加对相应程序集的引用。
  • 啊,我以为我提到了那个。 DataContext 实例位于 WCF 服务中。我通过从 Silverlight 应用程序调用我的 WCF 服务来访问其中的信息。当我将新数据传递给服务时,我需要它更新 DataContext 对象,然后才能告诉它提交更改。

标签: c# silverlight wcf


【解决方案1】:

您可以在 WCF 服务中使用静态 DataContext,但通常不鼓励这样做。然后将整个对象从 Silverlight 发送到 WCF 服务方法。在 WCF 服务方法内部,调用 staticCtx.UpdateObject(customer);和提交更改()。如果您使用相同的 staticCtx 加载客户对象,则 UpdateObject 会将状态更改为已更改,并且 submitChanges 将通过引擎将其发送以将其转换为更新 SQL。静态上下文可能有几个副作用,所以要小心。

另一种选择是使用 WCF 数据服务或 WCF RIA 服务(L2S 工作)和实体框架。然后就可以在客户端实际调用SubmitChanges,使用LINQ从客户端查询。

这里有one of many RIA Services 可用的文章和WCF Data Services 的一篇文章。如何在两者之间做出选择有很多考虑。

【讨论】:

    猜你喜欢
    • 2018-11-03
    • 2012-11-09
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多