C# 异常消息位于数据上下文类型上有一个top IQueryable属性,其元素类型不是实体类型
我正在构建托管在IIS7中的WCFDataService,我将使用反射提供程序作为数据源提供程序。 如果我将实体类型定义保留在定义服务的同一程序集中,则我的示例有效,但如果我将实体类型移动到另一个引用的程序集中,则示例无效 有以下错误 服务器在处理请求时遇到错误。异常消息为“在数据上下文类型“EntityContainer”上”,有一个顶级IQueryable属性“Cats”,其元素类型不是实体类型 服务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<
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;
}
}
}