我怀疑这只是 NHibernate 特有的。但我有如下代码....
public class ClientController : ApiController
{
// GET /api/<controller>
public IQueryable<Api.Client> Get()
{
return Repositories.Clients.Query().Select(c => Mapper.Map<Client, Api.Client>(c));
}
我基本上想使用 Odata 标准查询数据库......获取相关的“客户端”对象,并将它们转换为 DTO 的“Api.Client”。
但是......按原样的代码不起作用。因为 NHibernate 不知道如何使用 Mapper.... 它确实希望查询位于 .Select 之前。但我不确定我能不能先得到 Odata Query?
如果我这样做,它会起作用
return Repositories.Clients.Query().Select(c => Mapper.Map<Client, Api.Client>(c)).ToList().AsQueryable();
但这有点糟糕,因为您必须从数据库中获取所有客户端才能执行 OData 查询。
无论如何,在 OData 查询之后发生“选择”吗?或者另一种方法来解决这个问题?