C# 异常消息位于数据上下文类型上有一个top IQueryable属性,其元素类型不是实体类型

C# 异常消息位于数据上下文类型上有一个top IQueryable属性,其元素类型不是实体类型,c#,.net,wcf,odata,wcf-data-services,C#,.net,Wcf,Odata,Wcf Data Services,我正在构建托管在IIS7中的WCFDataService,我将使用反射提供程序作为数据源提供程序。 如果我将实体类型定义保留在定义服务的同一程序集中,则我的示例有效,但如果我将实体类型移动到另一个引用的程序集中,则示例无效 有以下错误 服务器在处理请求时遇到错误。异常消息为“在数据上下文类型“EntityContainer”上”,有一个顶级IQueryable属性“Cats”,其元素类型不是实体类型 服务 public class WcfDataService1 : DataService<

我正在构建托管在IIS7中的WCFDataService,我将使用反射提供程序作为数据源提供程序。 如果我将实体类型定义保留在定义服务的同一程序集中,则我的示例有效,但如果我将实体类型移动到另一个引用的程序集中,则示例无效 有以下错误

服务器在处理请求时遇到错误。异常消息为“在数据上下文类型“EntityContainer”上”,有一个顶级IQueryable属性“Cats”,其元素类型不是实体类型

服务

public class WcfDataService1 : DataService<EntityContainer>
    {

        public static void InitializeService(DataServiceConfiguration config)
        {
            config.SetEntitySetAccessRule("Cats", EntitySetRights.AllRead);
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;

        }
    }
现在,正如我上面所说,如果我将类Cat与其他代码放在一起,那么所有的工作都是有效的,但是如果我将Cat移动到引用的程序集,则会出现错误


我缺少什么?

两个小时后,我自己发现了问题,我在服务中引用了Microsoft.Data.Services.Client,在要移动实体类型的引用项目库中引用了System.Data.Services.Client。希望我的帖子能帮助别人。谢谢

另外,在一天的头痛之后,我找到了EntityFramework模型6.0.4的解决方案。需要从EntityFrameworkDataService派生Microsoft.OData.EntityFrameworkProvider程序集和WcfDataService类,如下所示:

    public class WcfDataService1 : EntityFrameworkDataService<EntityContainer>
    {
        // This method is called only once to initialize service-wide policies.
        public static void InitializeService(DataServiceConfiguration config)
        {
            // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
        }
    }
}
公共类WcfDataService1:EntityFrameworkDataService
{
//此方法只调用一次以初始化服务范围策略。
公共静态void InitializeService(DataServiceConfiguration配置)
{
//TODO:设置规则以指示哪些实体集和服务操作是可见的、可更新的等。
config.DataServiceBehavior.MaxProtocolVersion=DataServiceProtocolVersion.V3;
}
}
}

另加一个用于共享解决方案,尽管头痛很厉害:)+100已经头痛,没有解决方案-这一个救了我!
[DataServiceKey("Id")]
public  class Cat 
{
     public int Id { get; set; }

     public string Name { get; set; }
}
    public class WcfDataService1 : EntityFrameworkDataService<EntityContainer>
    {
        // This method is called only once to initialize service-wide policies.
        public static void InitializeService(DataServiceConfiguration config)
        {
            // TODO: set rules to indicate which entity sets and service operations are visible, updatable, etc.
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
        }
    }
}