我有一个DAL,我有实体框架来公开实体。这些实体用于WCF服务项目并公开给客户端。
我通过服务引用在Silverlight Web项目中使用这些实体。然后我使用RIA域服务进行代码共享。但是在尝试加载操作时出现以下错误:
DomainContext context= new DomainContext();
LoadOperation<Genre> lo = context.Load<Genre>(context.GetGenres());
GetGenres()是一个域服务操作,它可以加载所有类型。
[Invoke]
public IEnumerable<Genre> GetGenres()
{
return proxy.GetGenres(); //proxy is wcf proxy.
}
此查询返回一个List。 Genre是DataContract i 来自WCFServiceReference。
实际错误:
类型'SL.Web.ServiceReference.Genre'不能用作泛型类型或方法中的类型参数'TEntity' 'System.ServiceModel.DomainServices.Client.DomainContext.Load(System.ServiceModel.DomainServices.Client.EntityQuery)'。 没有隐式引用转换 'SL.Web.ChinookServiceReference.Genre'来 'System.ServiceModel.DomainServices.Client.Entity'。
问题是:
我可以这样做,还是应该在Silverlight中有一个自定义类,它映射到WCF服务datacontract并在Silverlight客户端和Web项目之间共享自定义实体?
有没有办法使用DomainService在Web和客户端之间共享服务引用中的实体?
答案 0 :(得分:0)
问题是您将GetGenres标记为Invoke操作。如果您将其标记为查询操作并重建,我认为您将处于良好状态。