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

本文关键字:继承 对象 选择 Linq DataServiceContext | 更新日期: 2023-09-27 18:04:33

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

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

我只想从DbSet Persons中获取User对象。我该怎么做呢?然后我像这样查询datervice:

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

我得到一个异常,OfType方法不支持数据服务上下文。

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

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

Ok,通过添加服务操作方法解决。查看解决方案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();