我一直在網上搜索一種方法來解決我的問題,我沒有任何運氣。我正在開發一個Silverlight商務類應用程序,並嘗試使用RIA服務。我成功地加載和保存沒有任何重大問題的實體,但是當我的應用程序第一次加載時,我需要加載我所謂的「值列表」。Silverlight/RIA服務/ EF - 自定義對象
我的值列表是獨立的實體,大概5個左右,由Id(鍵)和Value組成,它們用於填充combobox和autocompletebox之類的東西。我可以單獨查詢每一個,但是我寧願在一次查詢中一次加載所有值列表,以加快速度,因爲每條記錄少於15條記錄。我試圖開發一個自定義類返回所有這些,它看起來像這樣...
<DataContract(IsReference:=True)>
<KnownType(GetType(ValueList1Item))>
<KnownType(GetType(ValueList2Item))>
<KnownType(GetType(ValueList3Item))>
Partial Public Class ValueLists
<DataMember()>
Public Property ValueList1 AS List(Of ValueList1Item)
<DataMember()>
Public Property ValueList2 AS List(Of ValueList2Item)
<DataMember()>
Public Property ValueList3 AS List(Of ValueList3Item)
End Class
我已經試過許多方法來實現服務的方法,其中一個看起來是這樣的...
Public Function GetValueLists() As ValueLists
Dim ret As ValueLists = New ValueLists
ret.ValueList1 = (From v1 In ObjectContext.ValueList1Items
Select v1).ToList
ret.ValueList2 = (From v2 In ObjectContext.ValueList1Items
Select v2).ToList
ret.ValueList3 = (From v3 In ObjectContext.ValueList3Items
Select v3).ToList
Return ret
End Function
我也試過返回一個IQueryable(ValueLists)。無論我嘗試過什麼,每當我嘗試使用自定義類型時,都無法將該方法公開給客戶端。 RIA Services甚至有可能做這樣的事情還是尚未成熟?我知道我在過去用直WCF完成了這一點,但它顯然有更多的工作。
由於提前, 凱西
謝謝你的回覆獅子座。只要我有機會,我會嘗試一下,看看它是否有效。如果我繼續遇到像這樣的問題,我可能會很快傾倒RIA服務,並直接進入常規的WCF實現。我知道WCF是更多的工作,但它肯定是更靈活,這是很好的。在這一點上,我認爲RIA Services不是複雜程度相當高的應用程序的最佳解決方案,但也許我錯了。 – Casey 2012-02-13 16:05:05
那麼我對這個獅子座還沒有任何運氣。我真的不希望實體只能被讀取,因爲我將有一個「系統」頁面,用戶可以編輯這些值列表。 – Casey 2012-02-16 12:12:42