現在ASP.NETCoreを使用しており、Automapperを使用してLinq式をマップしたいと考えています。マッピングステートメントは次のとおりです。
var targetConditions = _mapper.Map<Expression<Func<Entity, bool>>>(filter);
ここで、filterは次の形式の仮パラメーターです。
(Expression<Func<EntityDTO, bool>> filter
マッピングプロファイルで、次のマップを作成しました。
CreateMap<Expression<Func<EntityDTO, bool>>, Expression<Func<Entity, bool>>>();
EFで汎用リポジトリパターンを使用しています。もちろん、コントローラーからDTOのフィールドでフィルター処理されたDTOのリストを取得したいと思います。次に、Linq for EFを使用してクエリを実行する前に、ビジネスレイヤーでDTOフィルターからエンティティフィルターに変換する必要があります。
式はEntityDTOからEntityにカバーされますが、内部のラムダ式のパラメーターはカバーされないため、EFでさらに使用すると、あらゆる種類のエラーが発生します。これをどのように行うことができますか?
これを試して:
IQueryable<Customer> query = repository.getCustomers(); // entities query
query.ProjectTo<CustomerDto>().Where(dtoFilterExpression)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加