Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C Silverlight-不使用Foreach&GetEnumerator()通过线路获取数据 出身背景_C#_Silverlight_Wcf Ria Services - Fatal编程技术网

C# C Silverlight-不使用Foreach&GetEnumerator()通过线路获取数据 出身背景

C# C Silverlight-不使用Foreach&GetEnumerator()通过线路获取数据 出身背景,c#,silverlight,wcf-ria-services,C#,Silverlight,Wcf Ria Services,目前我有一个使用RIA服务的C Silverlight业务应用程序。该应用程序托管在ASP.NET中,使用ADO.NET实体框架和域服务类读取和写入SQL Server数据库 由于RIA类不支持表之间的多个联接,因此有必要将LINQ实现为域服务的一部分,以便将所有表联接在一起并返回结果 问题 当我尝试在返回的对象列表上使用foreach循环时,会收到错误消息: 不包含GetEnumerator的公共定义 从该方法中获取数据的选项有哪些 大多数时候我只需要一个对象,所以我可以修改方法来选择第一个结

目前我有一个使用RIA服务的C Silverlight业务应用程序。该应用程序托管在ASP.NET中,使用ADO.NET实体框架和域服务类读取和写入SQL Server数据库

由于RIA类不支持表之间的多个联接,因此有必要将LINQ实现为域服务的一部分,以便将所有表联接在一起并返回结果

问题 当我尝试在返回的对象列表上使用foreach循环时,会收到错误消息:

不包含GetEnumerator的公共定义

从该方法中获取数据的选项有哪些

大多数时候我只需要一个对象,所以我可以修改方法来选择第一个结果并返回单个对象

此方法存在于域服务类中。此方法定义上下文,然后在Silverlight客户端中调用该方法

从Silverlight客户端调用方法 域服务类中存在服务器端Linq查询方法 GetJobImagesQuery声明存在于生成的代码文件-.Web.g.cs中:
那么你的方法返回什么呢?这听起来像是一种列表,它没有实现IEnumerable或IEnumerable,但我们无法判断它支持什么。

GetJobImagesQuery是一种由于GetJobImages函数而生成的方法。您的方法不应该返回图像列表,而是返回实体对象的可查询列表

例如:

public IQueryable<TableName> GetTableByID(long otherTable_ID)
{
    return this.Context.TableName.Where((x) => x.otherTable_ID == otherTable_ID);
}

可以。RIA服务和所有Silverlight通信一样,都是异步的。你也弄错了模式。无法直接使用context.getJobImageQueryImageJob.JobID.ToString执行任何操作。您必须在加载操作中使用它。加载是异步的,并返回一个LoadOperation对象。如果计划绑定到返回的实体,那么模式通常是立即将绑定设置为LoadOperation.entities。InotifyCollection使用的返回值已更改,因此当加载完成时,绑定也将自动更新。在您的示例中,您希望通过返回的实体执行foreach,因此该示例中的模式如下所示:

    context.Load(context.getJobImagesQuery(imageJob.JobID.ToString()), OnImagesLoaded, null);


private void OnImagesLoaded(LoadOperation lo)
{
  foreach (var item in lo.entities)
 {
 }
}

编辑:你在什么CTP上?我刚刚意识到,您可能正在使用一个非常旧的RIA服务版本,以使您的代码有任何意义。您应该使用July CTP。

这个方法确实会返回一个列表,因此您可以对其调用foreach。请提供无法使用的呼叫代码。。。它认为您试图迭代的是什么类型?即使我在foreach语句中将var定义为它仍然抱怨的类型,但不幸的是……您已经显示了GetJobImages的声明,但没有显示GetJobImagesQuery。声明返回的是什么。希望这就是你在Hi Jon之后的表现。我只是想知道你是否对这个问题有过更多的想法?对不起,我应该更改返回类型的方法是什么?我应该将其更改为什么?修改了我的答案。这有用吗?
var context = dds.DomainContext as InmZenDomainContext;
foreach (var item in context.GetJobImagesQuery(imageJob.JobID.ToString()))
{

}
/// <summary>
/// Returns an EntityQuery for query operation 'GetJobImages'.
/// </summary>
public EntityQuery<Image> GetJobImagesQuery(string jobGuid)
{
    Dictionary<string, object> parameters = new Dictionary<string, object>();
    parameters.Add("jobGuid", jobGuid);
    return base.CreateQuery<Image>("GetJobImages", parameters, false, true);
}
public IQueryable<TableName> GetTableByID(long otherTable_ID)
{
    return this.Context.TableName.Where((x) => x.otherTable_ID == otherTable_ID);
}
public EntityQuery<TableName> GetTableNameByRx_IDQuery(long otherTable_ID)
{
    Dictionary<string, object> parameters = new Dictionary<string, object>();
    parameters.Add("otherTable_ID", otherTable_ID);
    return base.CreateQuery<TableName>("GetTableNameByotherTable_ID", parameters, false, true);
}
public List<Image> GetJobImages(string jobGuid)
public IQueryable<Image> GetJobImages(string jobGuid)
foreach (var item in context.GetJobImagesQuery(imageJob.JobID.ToString()))
    context.Load(context.getJobImagesQuery(imageJob.JobID.ToString()), OnImagesLoaded, null);


private void OnImagesLoaded(LoadOperation lo)
{
  foreach (var item in lo.entities)
 {
 }
}