データベースへの単一のクエリを生成する次の式があります。
db = new MyDataContext();
var productInCity = db.Products
.Where(n => n.id == 2)
.Select(k => new ProductInCityDto()
{
ProductName = k.ProductName,
CityName = k.Store.City.Name,
CountryName = k.Store.City.Country.Name
.
.
.
})
.FirstOrDefault();
関数、拡張メソッド、またはオブジェクトのコンストラクターにマッピングを配置することで、このコードをよりクリーンにしたいのですが、次のようになります。
db = new MyDataContext();
var productInCity = db.Products
.Where(n => n.id == 2)
.Select(k => new ProductInCityDto(k))
.FirstOrDefault();
ただし、この場合、DBへの複数のクエリが生成されます(私はLinqToSqlプロファイラーを使用します)。
コードの可読性を向上させるために、マッピング(Selectステートメント)を分離する方法はありますか?