Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过数据服务为OData查询公开派生类型_C#_Wcf_Entity Framework Ctp5 - Fatal编程技术网

C# 通过数据服务为OData查询公开派生类型

C# 通过数据服务为OData查询公开派生类型,c#,wcf,entity-framework-ctp5,C#,Wcf,Entity Framework Ctp5,我创建了一个基于EF4 CTP5的代码优先模型,该模型在父子关系中包含两个实体,其中子实体包含多个额外字段。这两种类型都来自同一个表TPH,并使用新创建的鉴别器。现在,我需要弄清楚如何通过数据服务公开子entityset并使其可用于查询 这样做的用例是,我们有一个包含客户层次结构的表。每个客户端都有一个父级和零个或多个子级。父级仅包含设置客户机和账单名称、地址等所需的信息。。您可以将其视为卫星分支的子级除了从父级继承的属性外,还包含一组对其唯一的属性。所有数据都包含在同一个表中,该表已针对纯搜索

我创建了一个基于EF4 CTP5的代码优先模型,该模型在父子关系中包含两个实体,其中子实体包含多个额外字段。这两种类型都来自同一个表TPH,并使用新创建的鉴别器。现在,我需要弄清楚如何通过数据服务公开子entityset并使其可用于查询

这样做的用例是,我们有一个包含客户层次结构的表。每个客户端都有一个父级和零个或多个子级。父级仅包含设置客户机和账单名称、地址等所需的信息。。您可以将其视为卫星分支的子级除了从父级继承的属性外,还包含一组对其唯一的属性。所有数据都包含在同一个表中,该表已针对纯搜索性能进行了非规范化

到目前为止,我已经按照建议的方式公开了实体集,它建议公开一个返回context.Child IQueryable集合的方法。然而,这个实体集太大了,700k+记录太多,无法公开整个内容,而且我似乎无法让标准oData查询针对服务操作工作

我的问题很多,但为了使这篇文章尽可能简洁,我将限制它们

•首先,我想知道这是否仍然是处理这一问题的最佳和唯一方法?似乎不允许在没有此解决方案的情况下公开派生类型是功能上的一个主要差距。 •其次,如何查询此entityset?这可能吗?有没有可能我没有在EF作品中适当地具体化一些东西? 非常感谢您的任何帮助或建议


祝你万事如意,谢谢你

这仍然是最好的处理方法?。你需要解释这是什么,任何人都可以回答你的问题。你们谈论的实体集太大了,但你们的问题或评论并没有上下文。您所做的业务案例是什么?@Shiv,谢谢您的投入。希望我的编辑能有所帮助。是的,问题要清楚得多。为了处理这个大数据集,您可能要做的就是固有地应用一个过滤器,这样在不指定母公司或特定子公司的情况下,就不能盲目地请求entityset。这就像你不能要求所有的用户,但只有一个部门的用户。我不使用EF,所以我恐怕帮不上忙,但我知道,如果您只是使用WCF数据服务,您可以简单地定义一个类,称之为CompanyContext-只是一个具有IQueryable属性的POCO,任何IEnumerable都可以转换为IQueryable,然后您可以非常轻松地公开它并对其进行查询。使用oData协议。