数据服务上下文& Linq:仅选择继承的对象

发布于 2024-11-27 15:19:47 字数 361 浏览 2 评论 0原文

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

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

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

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

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

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

I use WCF DataSerice and EF4.1 code-first (C#).

I have 2 entities:
1. Person
2. User inherited from Person class

I want to get only User objects from DbSet Persons. How can I do that?
Then I query dataervice like that:

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

I get an exception that OfType method is not supported by dataservice context.

Error translating Linq expression to URI: The method 'OfType' is not supported.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

北方。的韩爷 2024-12-04 15:19:47

好的,通过添加服务操作方法解决。
请参阅此处的解决方案 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();

Ok, solved by adding service operation method.
See solution here http://msdn.microsoft.com/en-us/library/cc668788.aspx

here is my code:

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

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

and in your client application send request as usual:

service.CreateQuery<User>("DbUsers").Execute();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文