2011-12-02 75 views
0

簡言之,我希望能夠將IEnumerable分配給我的Context.Customers屬性(這是從SQL類型System.Data.Linq.Table導入的表;客戶正在一個實體類型)。DataContext對象並指定其屬性

現在你可能會想知道的第一件事是'你爲什麼要這樣做?'是的,通常有更好的方法來做到這一點,但我並不是在一般情況下運作。我的項目受到限制意味着我無法訪問項目的「網絡」部分。因此,我正在使用IIS中託管的WCF服務來解決這個問題。該服務包含DataContext對象並調用數據庫,並與Silverlight應用程序進行通信。

Silverlight應用程序調用GetCustomersAsynch,然後等待已完成的事件,此時它可以使用一組Customer實體。我的問題是關於提交這些更改。我可以將已更改的集合發送回WCF服務,但DataContext對象的'Customers'屬性是隻讀的,所以我不能將其分配給另一個。我不能只是一個一個寫一個,因爲可能會添加一個新條目(或者可能是新條目)。我想要的是使用傳遞的集合更新DataContext的Customers屬性,然後在DataContext上調用Submit來將更改提交到數據庫。

如果有人有任何建議或意見,請讓我知道。

在此先感謝。

+1

您使用的是WCF RIA服務,WCF數據服務還是純粹的WCF服務? – Aligned

+0

我不明白你在做什麼。 'DataContext'應該是'System.Data.Linq.DataContext'類,不是嗎?但如果是這樣,如果Silverlight不支持LINQ to SQL,如何在Silverlight代碼中使用它?您不應該事件能夠添加對相應的程序集的引用。 –

+0

啊,我想我已經提到過那一個。 DataContext實例位於WCF服務中。我通過從Silverlight應用程序調用我的WCF服務來訪問它中的信息。當我將新數據傳遞給服務時,我需要它來更新DataContext對象,然後才能讓它提交其更改。 – user738383

回答

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的文章。關於如何在兩者之間做出選擇有很多考慮因素。