我有一个WCF服务,其中我有一个方法,它使用Entity Framework返回表示数据库表(Accommodation)的对象的IQueryable。当我尝试在客户端使用该方法时,该方法不返回IQueryable而是object。我查看了服务的代码,Entity Framework生成的Accommodation类具有此属性
[DataContractAttribute(IsReference=true)]
所以,AFAIK客户端应该能够看到那个类。这里出了什么问题?
谢谢,
萨钦
答案 0 :(得分:4)
如果在合同中使用该类型,则该类型仅出现在元数据中。元数据不知道IQueryable是什么 - 它是行为的定义,而契约只定义状态,因此生成的代码将使用在这种情况下理解的东西 - 即对象
在服务合同中使用EF生成的类型真的不是一个好主意 - 实际上,您将服务使用者紧密地耦合到数据访问层。在服务内部使用EF,并使用定义要在服务边界上传递的数据的类型