如何将实体集合传递给.NET RIA数据服务?

Vit*_*lik 5 silverlight dataservice wcf-data-services

是否可以将对象集合传递给RIA数据服务查询?我在发送实体,Int或基本类型数组时没有问题,但只要我声明这样的方法

public void GetLessonsConflicts(Lesson[] lessons)
{
}
Run Code Online (Sandbox Code Playgroud)

我收到编译错误

"名为'GetLessonsConflicts'的操作不符合所需的签名.参数类型必须是实体类型或预定义的可序列化类型之一"

我只是在保存数据之前尝试在服务器端进行一些验证.我试过List,IEnumerable等.

谢谢

ser*_*ist 5

我认为问题实际上是缺乏回报价值.据我了解,您可以按惯例或属性识别DomainOperations.您没有显示属性,因此RIA将按惯例尝试匹配它.

例如,按照惯例,插入方法必须:

  • 具有Insert,Add或Create作为方法名称前缀,例如InsertEmployee
  • 匹配签名公共空名称(实体e);

查询方法必须:

  • 公开
  • 返回IEnumerable,IQueryable或T(其中T是实体).

自定义域操作必须

  • 公开
  • 返回无效
  • 将实体作为第一个参数.

编辑:请参阅下面的Rami A的评论.我当时认为这是真的,但我目前还没有使用这项技术,所以我目前还不够更新这个答案,只是注意到它可能不正确.

或者您可以使用[插入],[删除],[更新],[查询],[自定义]等属性.从我的文档来看,所有属性都是删除了对名称约定的要求 - 对我来说,不清楚[查询]和[自定义]属性实现了什么.

与DomainOperations一样,您可以定义ServiceOperations(使用[ServiceOperation]属性)和InvokeOperations.

这篇文章可能会有所帮助(尽管我认为它有点过时).