【问题标题】:How to pass a collection of Entities to .NET RIA Data Service?如何将实体集合传递给 .NET RIA 数据服务?
【发布时间】:2009-12-01 05:40:56
【问题描述】:

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

public void GetLessonsConflicts(Lesson[] lessons)
{
}

我得到一个编译错误

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

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

谢谢

【问题讨论】:

    标签: silverlight wcf-data-services dataservice


    【解决方案1】:

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

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

    • 具有插入、添加或创建作为方法名称前缀,例如插入员工
    • 匹配签名 public void name(Entity e);

    查询方法必须:

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

    自定义域操作必须

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

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

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

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

    This article 可能会有所帮助(尽管我认为它有点过时了)。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    相关资源
    最近更新 更多