Linq式を2つのタイプ間で変換する方法を理解しようとしています。1つはビジネスリポジトリにあり、もう1つはドメインリポジトリにあります。どちらのタイプにも、クエリで使用される同じデータプロパティがあります。私のビジネスレイヤーには、ビジネスエンティティに基づいてクエリを実行する次のメソッドがあります。
BUSINESS REPOSITORY:ドメインエンティティがビジネスエンティティに変換されました
public IQueryable<CustomerVendorProduct> Query(Expression<Func<CustomerVendorProduct,bool>> filterInBusinessRepo)
したがって、消費者は次のようなことを行うことができます。
var list = BusinessRepository.Query(c => c.CustomerId == 77);
CustomerId==77のCustomerVendorProductビジネスオブジェクトのリストを取得します。
ビジネスリポジトリのQuery()メソッド内で、ドメインリポジトリで次のメソッドを呼び出す必要があります。データベースから生の暗号化されたドメインエンティティを取得します。そのクエリには、ドメインリポジトリで使用されるエンティティタイプが必要であることに注意してください。これは当社の事業体に関連していますが、単にCRUDの運用に関与しています。
ドメインリポジトリ:データベースからの生の暗号化されたエンティティ
public IQueryable<CustomerVendorProductEntity> Query(Expression<Func<CustomerVendorProductEntity, bool>> filter)
したがって、ビジネスリポジトリのQuery()メソッドは、次のようになります。
var domainList = DomainRepository.Query(filterInBusinessRepo);
結果は、CustomerVendorProductEntityオブジェクトのリストになります。次に、ビジネスリポジトリはそれらをCustomerVendorBusinessエンティティに変換し、呼び出し元に返します。
だから、私の質問は、Linq式をビジネスリポジトリエンティティタイプ:CustomerVendorProductからドメインリポジトリエンティティタイプ:CustomerVendorProductEntityに変換するにはどうすればよいですか?変換方法を作成する必要があると思います...次のようなものです...しかし、変換を実行する方法がわかりません。私は本当にあなたの助けをいただければ幸いです:
// Convert the Linq Expression from our Business Layer to our Domain Layer.
private Expression<Func<CustomerVendorProductEntity, bool>> CVPToCVPE(Expression<Func<CustomerVendorProduct, bool>> filter)
{
var parms = System.Linq.Expressions.Expression.Parameter(typeof(CustomerVendorProductEntity), "destination");
var result = System.Linq.Expressions.Expression.Lambda<Func<CustomerVendorProductEntity, bool>>(filter, parms);
return result;
}
お手数をおかけしますが、よろしくお願いいたします。マイク
2012年11月2日:うわー、返信はありませんか?特にMVCアプリケーション内で、他の多くの開発者がこの問題に遭遇したと思います...まだ助けを望んでいます...