为什么ODataQueryOptions不能用于1 .. *关系的双方?

时间:2013-08-19 17:20:02

标签: c#-4.0 entity-framework-5 odata

我有两个表由链接表连接并通过OData / Entity Framework公开:

  • USERS
  • 用户组

使用〜/ api / Users,以下[USER] API控制器操作返回结果:

    public IEnumerable<USER> Get(ODataQueryOptions<USER> options)
    {
        var unitOfWork = new ATMS.Repository.UnitOfWork(_dbContext);

        var users = options.ApplyTo(unitOfWork.Repository<USER>().Queryable
                                              .Include(u => u.USERGROUPS)
                                              .OrderBy(order => order.USERNAME))
                                              .Cast<USER>().ToList();

        unitOfWork.Save();      // includes Dispose()

        return users;
    }

但是,我无法将ODataQueryOptions应用于以下[USERGROUP] API控制器操作:

    public IEnumerable<USERGROUP> Get(ODataQueryOptions<USER> options)
    {
        var unitOfWork = new ATMS.Repository.UnitOfWork(_dbContext);

        var userGroups = options.ApplyTo(unitOfWork.Repository<USERGROUP>().Queryable
                                .Include(u => u.USERS)
                                .OrderBy(order => order.GROUPNAME))
                                .Cast<USERGROUP>().ToList();

        unitOfWork.Save();      // includes Dispose()

        return userGroups.AsQueryable();
    }

当我这样做时,我收到以下错误:

  

无法将'DAL.USER'的ODataQueryOptions应用于IQueryable   'DAL.USERGROUP'。

相反,我必须省略options.ApplyTo(...)

        var userGroups = unitOfWork.Repository<USERGROUP>()
                                .Query()
                                .Include(u => u.USERS)
                                .Get()
                                .OrderBy(order => order.GROUPNAME);

有人可以向我解释为什么会这样吗?

感谢。

1 个答案:

答案 0 :(得分:1)

错误消息说明了一切。您无法应用旨在应用于用户组集合上的用户集合的查询。将参数类型更改为ODataQueryOptions<USERGROUP>

相关问题