0

考えすぎた結果、Linq To SQL をプロジェクトの DAL として使用することにしましたが、ビジネス オブジェクトは POCO オブジェクトのままにしておきます。

データベーススキーマは古く、下位互換性のために解決できない問題があるため、これによりある程度の柔軟性が得られます。

リフレクションを使用して、LINQ オブジェクトを POCO オブジェクトに取得または完了するメソッドを作成することを考えています。このメソッドは、すべてのプロパティを同じ名前で埋めようとする必要があります。

質問:
マッピングを行うためのより良い方法を知っていますか?

明確化:
1. NHibernate や Entities などは使いたくない
2. リフレクションが遅いことはわかっている

4

2 に答える 2

2

Jimmy Bogard のAutoMapperのようなものを調べたいと思うかもしれません。これは、あなたが話していることのほとんどを行います。彼はそれをCodePlexGoogleCodeにロードしています。

于 2009-02-11T05:50:30.503 に答える
0

静的クラス「コピー機」を作成します。そのクラスの静的コンストラクターは、T と U を反映し、DynamicMethod を使用してコードを発行できます (それぞれのプロパティをループし、どのプロパティが並んでいるかを確認します)。そうすれば、反映価格は 1 回支払われます。そこからは、通常のデリゲート呼び出しになりますが、これはかなり高速です。

遭遇する可能性のある問題は、同じ名前のフィールドを単純にコピーするだけでは、完全に一致しない場合に多少制限されることです。リフレクションの使用を検討し、変換を行うコードを生成してから、手動で修正することができます。

于 2009-01-27T16:36:22.730 に答える