リンク テーブルで結合され、OData/Entity Framework を介して公開される 2 つのテーブルがあります。
- ユーザー
- ユーザー・グループ
~/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;
}
[USERGROUP]
ただし、次のAPI コントローラー アクションに ODataQueryOptions を適用できません。
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 を「DAL.USERGROUP」の IQueryable に適用できません。
代わりに、次を省略する必要がありoptions.ApplyTo(...)
ます。
var userGroups = unitOfWork.Repository<USERGROUP>()
.Query()
.Include(u => u.USERS)
.Get()
.OrderBy(order => order.GROUPNAME);
誰かが私にこれがなぜなのか説明してもらえますか?
ありがとう。