1

私は、Entity Framework 4 DB-First と Automapper を使用してドメインの名前空間で POCO を生成する n 層ドメイン駆動設計プロジェクトに取り組んでいます。

明確にするために: EF プロジェクトは MyProject.Repositories.EF.Entities 名前空間のエンティティを返し、Automapperを使用してMyProject.Domain.Entities名前空間のエンティティに変換します。

ここで、EF エンティティとドメイン エンティティ間をマッピングするときに、すべてのコレクション プロパティが列挙されているかどうか、つまり、関連するすべてのデータがマッピング時に DB から取得されるかどうか、またはそれらがまだコードで実際にそれらを列挙するときにのみ遅延ロードされます。

私は明らかなパフォーマンスへの影響について心配しています。

4

2 に答える 2

2

答えはノーです。2 つの IEnumerables の間でマップする限り、実際の列挙は foreach や ToList() などを実行するときにのみ行われます。これらのオブジェクトの IEnumerable プロパティに対してアクションを実行しない場合、列挙は決して行われず、関連するデータは取得されません。

于 2014-05-01T09:24:32.217 に答える
0

簡単に言えば、これは AutoMapper の問題ではなく、ORM の使用方法の問題です。AutoMapper は、既に記述されているコードを削除するだけなので、ORM に対してお粗末なコードを記述した場合でも、AutoMapper は喜んで対応します。

AutoMapper の前、AutoMapper の使用中、および AutoMapper の使用後に、人々は ORM を悪用していました。遅延読み込みは、正しく使用すれば強力なツールですが、それでも悪用される可能性があります。遅延読み込みを使用しても、開発者はその裏で実際に何が起こっているかを理解できなくなりません。

したがって、AutoMapper を使用しますが、AutoMapper を使用していなかった場合と同様に、フェッチには注意してください。

于 2013-09-20T22:06:20.280 に答える