これが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 基準を使用してデータベースにクエリを実行したいと考えています。関連する「Client」オブジェクトを取得し、それらを DTO の「Api.Client」に変換します。
しかし...コードはそのままでは機能しません。NHibernate は Mapper で何をすべきかわからないため...Select の前にクエリが来ることを本当に望んでいます。しかし、最初に Odata Query を取得できるかどうかわかりません。
やればうまくいく
return Repositories.Clients.Query().Select(c => Mapper.Map<Client, Api.Client>(c)).ToList().AsQueryable();
しかし、OData クエリを実行するためにデータベースからすべてのクライアントを取得する必要があるため、これは少し面倒です。
ODataクエリの後に「選択」を行う方法はありますか? またはこれにアプローチする別の方法はありますか?