是否可以使用如下的通用服务器端查询?
public IQueryable<TContact> GetContactsOfType<TContact>()
where TContact : Contact
{
return ObjectContext.Contacts.OfType<TContact>();
}
我希望RIA能够在客户端项目中识别并重新生成此查询。
注意: Contact
是一个包含一些子类的抽象类。我正在使用Entity-Framework生成EntityObject
s。
我在尝试编译时遇到的错误:Type 'TContact' is not a valid entity type. Entity types must have a default constructor.
答案 0 :(得分:2)
默认情况下,WCF RIA Services不会公开客户端要调用的通用域服务方法。 RIA是强类型的,可以更容易地推断出这种行为。
但似乎有一种解决方法可以定义您的DomainOperationEntry和自定义DomainServiceDescriptionProvider。科林·布莱尔发表了一个答案here。这似乎符合你的期望。
更新:我尝试了你想要的我的silverlight项目,并在我的域名服务上定义了一个通用的查询方法。项目编译成功,但在客户端省略了泛型参数。
答案 1 :(得分:1)
相反,我建议使用EF生成器的文本模板为每个实体创建RIA服务操作。并使用名称模式,例如RIA Services如何使用“获取”<Type>
查询和其他方法。