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

时间:2009-12-01 05:40:57

标签: silverlight wcf-data-services dataservice

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

public void GetLessonsConflicts(Lesson[] lessons)
{
}

我收到编译错误

  

“操作命名   'GetLessonsConflicts'不符合   到所需的签名。参数   类型必须是实体类型或其中之一   预定义的可序列化   类型“

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

由于

1 个答案:

答案 0 :(得分:5)

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

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

  • 具有插入,添加或创建作为方法名称前缀,例如InsertEmployee
  • 匹配签名公共空名称(实体e);

查询方法必须:

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

自定义域操作必须

  • 公开
  • return void
  • 将实体作为第一个参数。

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

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

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

This article可能有所帮助(虽然我认为它有点过时了。)