2010-09-17 63 views
1

我遇到了RIA服务从服务器返回3个实体的问题(我在服务器进程上调试时已经验证过,并通过Fiddler验证过服务是面的返回3个实体RIA服务:服务器进程返回多个实体,但客户端显示1个实体重复

我使用MVVM所以我呼吁在客户端加载使用我从肖恩Wildermuth样品借来一个辅助函数:下面是代码:

// 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属性(containsi如果我们有任何结果的话)。

在服务器上,我们使用AutoMapper将结果映射到我们公开的Domain Classes,并且此特定服务调用返回IEnumerable。

我错过了什么(或什么更能帮助别人解决这个问题)。

谢谢!

+1

检查您的PK定义并确保RIA服务知道哪个列是唯一的。 – 2010-09-17 16:39:11

+0

顺便说一下,当我在“evt(this,new EntityResultsArgs (r.Entities))”上设置断点时;“线我得到3结果全部dups。如果我在RIA Services生成的实体的名称属性上设置了一个断点,我会看到所有的数据都被设置了..(但是我最终得到了3次而不是3次不同的记录) – DevTheo 2010-09-17 16:42:26

+0

关键属性设置在正确的字段上 – DevTheo 2010-09-17 16:43:29

回答

2

是的,问题现在得到证实。我从服务中检索3个实体,全部使用Id(又名“[Key]”值)为0.

相关问题