WCF RIA Общий запрос на стороне сервера?

Можно ли иметь общий запрос на стороне сервера, как показано ниже?

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

Я хочу, чтобы RIA распознал и сгенерировал для меня этот запрос в клиентском проекте.

Замечания: Contact абстрактный класс, который имеет несколько подклассов Я использую Entity-Framework сгенерированный EntityObjects.

Ошибка, которую я получаю, когда пытаюсь скомпилировать: 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> Запрос и другие методы.

Другие вопросы по тегам