Как передать коллекцию сущностей службе данных .NET RIA? - PullRequest
5 голосов
/ 01 декабря 2009

Можно ли передать коллекцию объектов в запрос службы данных RIA? У меня нет проблем с отправкой Entity, Int или массива примитивных типов, но как только я объявляю такой метод

public void GetLessonsConflicts(Lesson[] lessons)
{
}

я получаю ошибку компиляции

"Операция по имени «GetLessonsConflicts» не соответствует до требуемой подписи. параметр типы должны быть типом объекта или одним из предопределенный сериализуемый типы "

Я просто пытаюсь выполнить проверку на стороне сервера, прежде чем сохранить данные. Я пробовал List, IEnumerable и т. Д.

Спасибо

1 Ответ

5 голосов
/ 09 февраля 2010

Я думаю, что проблема на самом деле заключается в отсутствии возвращаемого значения. Насколько я понимаю, вы можете идентифицировать DomainOperations по соглашению или по атрибуту. Вы не показываете атрибут, поэтому RIA будет пытаться сопоставить его по соглашению.

Например, по соглашению метод вставки должен:

  • имеет префикс вставки, добавления или создания в качестве имени метода, например InsertEmployee
  • соответствует общедоступному имени подписи (объект e);

метод запроса должен:

  • быть публичным
  • вернуть IEnumerable, IQueryable или T (где T - сущность).

пользовательская операция домена должна

  • быть публичным
  • возврат недействителен
  • имеет Entity в качестве первого параметра.

РЕДАКТИРОВАТЬ: См. Комментарий Рами А ниже. Я считаю, что в то время это было правдой, но в настоящее время я не работаю с этой технологией, поэтому у меня недостаточно информации о ней, чтобы обновить этот ответ, кроме как отметить, что он может быть неправильным.

Или вы можете использовать такие атрибуты, как [Вставить], [Удалить], [Обновить], [Запрос], [Пользовательский]. Из моих документов все атрибуты - это удаление требования для соглашения об именах - мне не ясно, чего достигают атрибуты [Query] и [Custom].

Как и DomainOperations, вы можете определять ServiceOperations (используя атрибут [ServiceOperation]) и InvokeOperations.

Эта статья может помочь (хотя я думаю, что она немного устарела).

...