Как передать коллекцию Entities в службу данных .NET RIA?
-
22-07-2019 - |
Вопрос
Можно ли передать коллекцию объектов в запрос службы данных RIA?У меня нет проблем с отправкой Entity, Int или массива примитивных типов, но как только я объявлю такой метод
public void GetLessonsConflicts(Lesson[] lessons)
{
}
я получаю ошибку компиляции
«Операция с именем 'geteslonsonflicts» не соответствует требуемой подписи.Типы параметров должны быть типом объекта или одним из предопределенных сериализуемых типов "
Я просто пытаюсь выполнить некоторую проверку на стороне сервера, прежде чем сохранять данные.Я пробовал List, IEnumerable и т. д.
Спасибо
Решение
Я думаю, что проблема на самом деле в отсутствии возвращаемого значения.Насколько я понимаю, вы можете идентифицировать DomainOperations по соглашению или по атрибуту.Вы не показываете атрибут, поэтому RIA будет пытаться сопоставить его по соглашению.
Например, по соглашению метод вставки должен:
- иметь Insert, Add или Create в качестве префикса имени метода, например.ВставитьСотрудник
- сопоставить подпись public void name(Entity e);
метод запроса должен:
- быть публичным
- верните IEnumerable, IQueryable или T (где T — сущность).
операция пользовательского домена должна
- быть публичным
- возврат недействительным
- иметь Entity в качестве первого параметра.
РЕДАКТИРОВАТЬ:См. комментарий Рами А. ниже.Я считаю, что в то время это было правдой, но в настоящее время я не работаю с этой технологией, поэтому я недостаточно в курсе, чтобы обновлять этот ответ, кроме как отметить, что он может быть неверным.
Или вы можете использовать такие атрибуты, как [Вставить],[Удалить],[Обновить],[Запрос],[Пользовательский].Из моих документов все, что делают атрибуты, — это удаляют требование к соглашению об именах - для меня из них неясно, чего достигают атрибуты [Query] и [Custom].
Помимо DomainOperations, вы можете определить ServiceOperations (используя атрибут [ServiceOperation]) и InvokeOperations.
Эта статья может помочь (хотя я думаю, что это немного устарело).