在我的Silverlight应用程序中,在创建ADO.NET实体数据模型和WCF RIA服务域服务类之后,在相应的ProductService类中,我具有一个查询操作,该操作将产品实体的集合返回给客户端,如下所示:
public IQueryable<Product> GetProducts()
{
return this.ObjectContext.Products;
}
现在,我尝试在客户端Silverlight应用程序中读取它,并将结果加载到ObservableCollection中:
ProductContext pcontext = new ProductContext();
ObservableCollection<Prod> prAvs = pcontext.GetProductsQuery();
但是出现错误:
无法隐式转换类型
System.ServiceModel.DomainServices.Client.EntityQuery<MyTestApp.Web.Product>
到
System.Collections.ObjectModel.ObservableCollection<MyTestApp.Prod>
我该如何解决这个问题?
最佳答案
第一个问题:
您应该使用RIA服务为您生成的客户端Products
类,而不是您自己定义的另一个类。
例如,您应该具有MyTestApp.Web.Product的集合,而不是MyTestApp.Prod对象的集合。
您将在客户端项目的隐藏的Generated_Code文件夹中找到生成的域上下文。其中将是一个MyTestApp.Web.g.cs文件,其中包含客户端上下文和任何数据对象(例如MyTestApp.Web.Product)。
第二期:
您不能只对集合进行查询。
您需要使用查询来加载实体变更集。
var loadOperation = pcontext.Load(pcontext.GetProductsQuery());
结果(加载完成时)是返回的loadOperation对象中的实体集合。您可以立即使用实体集合,但最初是空的。
关于c# - 将WCF RIA服务查询结果加载到ObservableCollection,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4163674/