この記事に示されているように、私はジェネリックリポジトリパターンを使用しています。
これらは私のPOCOクラスです:
public class Order
{
public int ID { get; set; }
public int CustomerID {get; set;}
[InverseProperty("Order")]
public virtual List<OrderDetail> OrderDetail {get; set;}
public static Expression<Func<Order, bool>> OrdersFromCustomer(decimal customerId)
{
return f => f.CustomerID == customerId;
}
}
public class OrderDetail
{
public int OrderID { get; set;}
public int ID { get; set;}
public int ItemID { get; set;}
public int Amount { get; set;}
[ForeignKey("OrderID")]
public virtual Order { get; set;}
}
したがって、私のプログラムで顧客からすべての注文を受け取りたい場合は、次のようにすることができます。
using (MyDbContext context = new MyDbContext())
{
MyRepository repository = new MyRepository(context);
var orders = repository.Get(Order.OrdersFromCustomer(25));
}
それはうまく機能しますが、問題があります:金額が100を超えるすべての注文が必要な場合はどうなりますか?OrderFromCustomer関数として詳細にフィルターの式を作成するにはどうすればよいですか?
LinqKitでも試しましたが、結果がありません。