在使用WCF服务公开的客户端应用程序中使用实体框架实体

时间:2012-02-21 06:02:20

标签: wcf entity-framework silverlight-4.0 ria

我有一个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和客户端之间共享服务引用中的实体?

1 个答案:

答案 0 :(得分:0)

问题是您将GetGenres标记为Invoke操作。如果您将其标记为查询操作并重建,我认为您将处于良好状态。