我有两个表由链接表连接并通过OData / Entity Framework公开:
使用〜/ 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);
有人可以向我解释为什么会这样吗?
感谢。
答案 0 :(得分:1)
错误消息说明了一切。您无法应用旨在应用于用户组集合上的用户集合的查询。将参数类型更改为ODataQueryOptions<USERGROUP>
。