【发布时间】: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