WCF RIA通用服务器端查询?
问题描述:
是否有可能具有通用的服务器端查询如下?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.
答
默认情况下,WCF RIA Services不公开为客户端调用通用域名服务的方法。 RIA是强类型的,可以更容易推断行为。
但是,在DomainOperationEntry和一个自定义的DomainServiceDescriptionProvider上定义你的解决方案似乎有一个解决方法。科林布莱尔贴出回答here。这似乎符合你的期望。
更新:我试过你想要我的silverlight项目,并在我的域服务上定义了一个通用查询方法。该项目编译成功,但通用参数是在客户端ommited。
答
相反,我会建议使用EF生成器的文本模板为每个实体创建RIA服务操作。并使用RIA Services如何使用“Get”<Type>
查询和其他方法的名称模式。
“更新:我试过......”:联系人是一个抽象类,我更新我的答案,添加我得到的错误。 – Shimmy 2011-05-18 19:39:08
您只能在WCF RIA中使用具体的类;它不会统治泛型。 – 2011-05-18 19:43:16
@Shimmy:好的,我用非stract类试过,并没有发现错误。 – Jehof 2011-05-19 05:43:48