I顧客テーブルentityframework
var customers= context.CustomerEntities.Include("Addresses").Select(Mapper.Map).ToList();
マッパー関数からデータを取得し、次のコードは、ビジネスに、エンティティオブジェクトをマッピングしていオブジェクトであり、このように見えます。
internal static Customer Map(CustomerEntity entity)
{
if (entity == null)
return null;
return new Customer
{
Id = entity.Id,
Name = entity.Name,
Addresses = Map(entity.Addresses)
};
}
ここで、上記のコードはうまく動作します。しかし
、私はこれを行うにしてみてください。
var customers= context.CustomerEntities.Select(Mapper.Map).ToList();
は、私は、エラーメッセージが表示されます:マッパー関数が実行されているThere is already an open DataReader associated with this Command which must be closed first
。
この問題を解決するには、接続文字列にmultipleactiveresultsets=True
を設定する必要があります。私はそれを試して、それは私の問題を解決しました。
しかし、SQLプロファイラを実行すると、エンティティフレームワークからすべての顧客にクエリを実行すると、必要のないすべてのアドレスも自動的に取得されました。
multipleactiveresultsets=True
を設定する以外にも回避策がありますか?私はアドレスが常に怠惰に読み込まれることを望んでいません。
ここでは例の前にコードをチェックしたいと思います。コードが実行される前に別のコンテキストがアクティブになっていると思います。 – Middas
いいえ私は別のアクティブなコンテキストを持っていません –
ダン、あなたは何かにいるかもしれません。私はそれを試してみましょう –