2011-05-18 130 views
3

是否有可能具有通用的服務器端查詢如下?WCF RIA通用服務器端查詢?

public IQueryable<TContact> GetContactsOfType<TContact>() 
    where TContact : Contact 
{ 
    return ObjectContext.Contacts.OfType<TContact>(); 
} 

我希望RIA能夠在客戶端項目中識別並重新生成此查詢。

注:Contact是一個抽象類,它有一些子類。我正在使用實體框架生成EntityObject s。

當我試圖編譯我得到的錯誤:Type 'TContact' is not a valid entity type. Entity types must have a default constructor.

回答

2

默認情況下,WCF RIA Services不公開爲客戶端調用通用域名服務的方法。 RIA是強類型的,可以更容易推斷行爲。

但是,在DomainOperationEntry和一個自定義的DomainServiceDescriptionProvider上定義你的解決方案似乎有一個解決方法。科林布萊爾貼出回答here。這似乎符合你的期望。

更新:我試過你想要我的silverlight項目,並在我的域服務上定義了一個通用查詢方法。該項目編譯成功,但通用參數是在客戶端ommited。

+0

「更新:我試過......」:聯繫人是一個抽象類,我更新我的答案,添加我得到的錯誤。 – Shimmy 2011-05-18 19:39:08

+0

您只能在WCF RIA中使用具體的類;它不會統治泛型。 – 2011-05-18 19:43:16

+0

@Shimmy:好的,我用非stract類試過,並沒有發現錯誤。 – Jehof 2011-05-19 05:43:48

1

相反,我會建議使用EF生成器的文本模板爲每個實體創建RIA服務操作。並使用RIA Services如何使用「Get」<Type>查詢和其他方法的名稱模式。