2011-05-18 132 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>查询和其他方法的名称模式。