DataServiceContext & Linq:只选择继承的对象

Posted

技术标签:

【中文标题】DataServiceContext & Linq:只选择继承的对象【英文标题】:DataServiceContext & Linq: Select only inherited objects 【发布时间】:2011-08-04 10:14:04 【问题描述】:

我使用 WCF DataSerice 和 EF4.1 代码优先 (C#)。

我有 2 个实体: 1人 2. 继承自Person类的用户

我只想从 DbSet Persons 中获取用户对象。我怎样才能做到这一点? 然后我像这样查询数据服务:

service.CreateQuery<User>("DbPersons").OfType<User>().Execute();

我收到数据服务上下文不支持 OfType 方法的异常。

将 Linq 表达式转换为 URI 时出错:不支持方法“OfType”。

【问题讨论】:

您使用的是什么版本的数据服务。 .NET 4.0 附带的标准版本不支持OfType 运算符。 你好,我试过任何版本(包括CTP2) 你在六月 CTP 上试过了吗? blogs.msdn.com/b/astoriateam/archive/2011/06/30/… 刚刚试了一下。我之前在这里描述过另一个问题***.com/questions/6371243/… 现在我得到这个异常'System.InvalidOperationException:客户端和服务之间存在类型不匹配。类型“Crm.Objects.Departament”不是实体类型,但响应负载中的类型表示实体类型。请确保客户端上定义的类型与服务的数据模型匹配,或者更新客户端上的服务引用。在 System.Data.Services.Client.Ato' 【参考方案1】:

好的,通过添加服务操作方法解决。 在此处查看解决方案http://msdn.microsoft.com/en-us/library/cc668788.aspx

这是我的代码:

      public static void InitializeService(DataServiceConfiguration config)
    
        config.SetServiceOperationAccessRule("DbUsers", ServiceOperationRights.AllRead);
    

    [WebGet]
    public IQueryable<User> DbUsers()
    
        return CurrentDataSource.DbPersons.OfType<User>();
    

并在您的客户端应用程序中照常发送请求:

service.CreateQuery<User>("DbUsers").Execute();

【讨论】:

以上是关于DataServiceContext & Linq:只选择继承的对象的主要内容,如果未能解决你的问题,请参考以下文章

人民日报报道:伟大复兴!数字货币震撼来袭!

python 模块 SQLalchemy

要求的参考折叠规则的简明解释:(1) A& & -> A& , (2) A& && -> & , (3) && &a

Java String 将 '&' 替换为 & 而不是 & 到 &amp;

Oracle基本语法&&函数&&子查询&&分页查询&&排序&&集合操作&&高级分组函数

breakpoints &amp;&amp; lldb &#160;&amp;&amp; chisel 的使用