WCF RIA Общий запрос на стороне сервера?
Можно ли иметь общий запрос на стороне сервера, как показано ниже?
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.
2 ответа
По умолчанию службы WCF RIA не предоставляют общие методы службы домена для вызова клиентом. RIA строго типизирован, чтобы облегчить рассуждения о поведении.
Но, кажется, есть обходной путь с определением вашего для DomainOperationEntry и пользовательского DomainServiceDescriptionProvider. Колин Блэр опубликовал ответ здесь. Это похоже на то, что вы ожидаете.
Обновление: я попробовал, что вы хотите, в моем проекте silverlight и определил общий метод запроса в моей доменной службе. Проект успешно компилируется, но общий параметр на клиентской стороне опущен.
Вместо этого я бы предложил использовать текстовый шаблон генератора EF для создания операций служб RIA для каждого объекта. И используйте шаблон имени, например, как RIA Services использует "Get" <Type>
Запрос и другие методы.