は、私は次のモデルがあります:Linqを使用して動的クエリ結果をEntitySetに結合しますか?
public class Order
{
public int Id {get; set;}
public int CustomerId {get; set;}
public virtual Category Category {get; set;}
//Many more properties...
}
public class OrderLine
{
public int Id {get; set;}
public int OrderId {get; set;}
public virtual Order Order {get; set;}
public virtual Product Product {get; set;}
//Other properties...
}
は、私は特定の顧客の注文を取得する必要があります。私は、このクラスにデータを投影できることを考えていたように私はCustomerOrder
ためのマッピングOrder
とOrderLine
クラスのコンフィギュレーションが、どれを持って
public class CustomerOrder
{
public int CustomerId {get; set;}
public int OrderId {get; set;}
public string ProductName {get; set;}
public virtual ICollection<OrderLine> {get; set;}
}
:あまりにも多くの情報を取得しないようにするためには、私はクラスを作成しました。
私がすることができます:
利用EF含ん指定してデータを取得します。データが取得されたら、それを
CustomerOrder
クラスに投影することができます。しかし、これは、主要なテーブルとインクルードされたテーブルのすべての列を取得するよう強制されますか?カスタムSQLクエリを使用して、
Order
テーブルから必要な詳細を取得することができます(ビューから直接入力することもできます)。 Linqを使用してこの結果セットをOrderLine
と結合すると、完全な投影が得られます。ただし、ビューのマッピング設定が必要ですか?
あまりにも多くの列を回避し、SQLのSELECT文に参加するには、CustomerOrder
にデータを投影する最良の方法は何ですか?
OrderとOrderLineの間にナビゲーションプロパティがありますか? –
@ YacoubMassadはい。 –
EFクエリの投影は、正しく実行されるとすべての列のロードを避けます。参照してください:http://stackoverflow.com/questions/1531934/entity-framework-only-get-specific-columns –