5

是否可以将对象集合传递给 RIA 数据服务查询?我发送实体、Int 或原始类型数组没有问题,但是一旦我声明了这样的方法

public void GetLessonsConflicts(Lesson[] lessons)
{
}

我得到一个编译错误

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

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

谢谢

4

1 回答 1

5

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

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

  • 将 Insert、Add 或 Create 作为方法名称前缀,例如 InsertEmployee
  • 匹配签名 public void name(Entity e);

查询方法必须:

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

自定义域操作必须

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

编辑:见下面拉米 A 的评论。我相信这在当时是正确的,但我目前没有使用这项技术,所以我没有足够的时间来更新这个答案,只是注意到它可能是不正确的。

或者您可以使用 [Insert]、[Delete]、[Update]、[Query]、[Custom] 等属性。从我的文档中,所有属性所做的只是删除了对名称约定的要求——对我来说,他们并不清楚 [Query] 和 [Custom] 属性实现了什么。

除了 DomainOperations,您还可以定义 ServiceOperations(使用 [ServiceOperation] 属性)和 InvokeOperations。

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

于 2010-02-09T17:29:33.913 回答