【问题标题】:RIA Services: Server process returns multiple entities but Client shows 1 entity duplicatedRIA 服务:服务器进程返回多个实体,但客户端显示 1 个实体重复
【发布时间】:2010-09-17 16:31:37
【问题描述】:

我遇到了 RIA 服务从服务器返回 3 个实体的问题(我在调试服务器进程时进行了验证,并通过 Fiddler 验证了该服务正在返回 3 个实体。

我正在使用 MVVM,因此我使用从 Shawn Wildermuth 示例中借用的辅助函数在客户端调用 Load:代码如下:

    // Generic query handling
     protected void PerformQuery<T>(DomainContext dc, string name, EntityQuery<T> qry, EventHandler<EntityResultsArgs<T>> evt) where T : Entity
    {
        dc.Load<T>(qry,(r) =>
        {
            if (evt != null)
            {
                try
                {
                    if (r.HasError)
                    {
                        evt(this, new EntityResultsArgs<T>(r.Error));
                    }
                    else if (r.Entities.Count() > 0)
                    {
                        evt(this, new EntityResultsArgs<T>(r.Entities));
                    }
                }
                catch (Exception ex)
                {
                    evt(this, new EntityResultsArgs<T>(ex));
                }
            }
        }, null);
    }

EntityResultsArgs 是一个简单的类,它公开了一个异常属性(称为 Error)和一个 Results 属性(如果我们得到任何结果,则包含结果)。

在服务器上,我们使用 AutoMapper 将结果映射到我们公开的域类,这个特定的服务调用返回 IEnumerable。

我错过了什么(或者还有什么可以帮助某人解决这个问题的)。

谢谢!

【问题讨论】:

  • 检查您的 PK 定义并确保 RIA 服务知道哪一列是唯一的。
  • 顺便说一句,当我在“evt(this, new EntityResultsArgs(r.Entities));”上设置断点时我得到 3 个结果,所有重复。如果我在 RIA 服务生成实体的名称属性上设置断点,我会看到所有数据都已设置。(但我最终得到 3 个重复而不是 3 个不同的记录)
  • 关键属性设置在正确的字段上
  • 但我认为你的想法是正确的。刚刚让我的同事(服务的作者)检查以确保 AutoMapper 正确设置了密钥。不确定是否正确。

标签: silverlight-4.0 entity-framework-4 wcf-ria-services


【解决方案1】:

是的,问题现在得到确认。我从服务中检索了 3 个实体,它们的 ID(也称为“[Key]”值)为 0。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多