2013-08-19 68 views
0

我具有由一個鏈接表連接並暴露於通過的OData /實體框架兩個表:爲什麼ODataQueryOptions不能在1 .. *關係的兩端工作?

  • USERS
  • 用戶羣組

使用〜/ API /用戶,下面[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(); 
    } 

當我這樣做,我得到以下錯誤:

Cannot apply ODataQueryOptions of 'DAL.USER' to IQueryable of 'DAL.USERGROUP'.

相反,我不得不省略options.ApplyTo(...)

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

可有人請解釋我爲什麼這是?

謝謝。

回答

1

錯誤消息說明了這一切。您無法應用旨在應用於用戶組的一組用戶上的查詢。將參數類型更改爲ODataQueryOptions<USERGROUP>

+0

太容易了。錯過了。謝謝。 – ElHaix

相關問題