以下の簡単なシナリオがあります。私は私のedmxで定義されているCustomerクラスを持っています。 Orderクラスもあり、顧客はOrdersプロパティを使用して0つ以上のOrdersを持つことができます。EFカスタムセレクタ式
私はこのような私の顧客クラスのOrderCountプロパティを定義した:
public partial class Customer
{
public int OrderCount { get; set; }
}
私は簡単に適切にこのOrderCountの値をロードする選択クエリを、書きたいと思います。私は、Customerクラスでこれをやってみました:
public partial class Customer
{
public int OrderCount { get; set; }
public static Expression<Func<Customer, Customer>> DetailSelector = c =>
{
c.OrderCount = c.Orders.Count;
return c;
};
}
[選択クエリ:
var customersWithOrderCount = ctx.Customers.Select(Customer.DetailSelector);
しかし、文の本体を持つラムダがに変換することはできませんことを、私はエラーを取得するこの方法は、表現。 は、それから私はこれを実行しようとしました:
public partial class Customer
{
public int OrderCount { get; set; }
public static Expression<Func<Customer, Customer>> DetailSelector = c => Customer.LoadDetail(c);
public static Customer LoadDetail(Customer customer)
{
customer.OrderCount = customer.Orders.Count;
return customer;
}
}
しかし、私は選択クエリを実行すると、私は次の例外を取得し、この方法:
LINQ to Entities does not recognize the method 'Customer LoadDetail(Customer)' method, and this method cannot be translated into a store expression.
これを行う最も簡単な方法でしょうか?
更新:明確にするために、私は具体的にExpressionでこれを行う方法を探しています。だから、私はデータベースからOrdersをロードしたくない、私はちょうどOrderCountプロパティを入力したい。 ありがとう、
はい、私はWCFの分散シナリオでCustomerインスタンスを使用しています。 Ordersをクライアントに送り、それらの数だけを送ります(これは実際のアプリケーションでは、このような他の多くのプロパティがあります)。 –