外部キーなどを備えた稼働中の EF システムを使用して、ショップまたはショップ チェーンのすべての顧客データを引き出すことができます。
次のコードを使用してデータを取得します。
var foo = from s in context.Shops
where (s.ShopId == shopId)
select s;
Shop には、次のように定義されたナビゲーション プロパティがあります。
[ForeignKey("ShopId")]
public virtual ICollection<CustomerOrder> CustomerOrders { get; set; }
特に、CustomerOrder にはステータスと完了日が含まれています。
したがって、現在私のコードには、特定の日付以降に完了したすべての完了した注文 (ステータス 7) を返す次のものがあります。
[NotMapped]
public virtual List<CustomerOrder> TotalCompletedCustomerOrders(DateTime dt)
{
return (from co in CustomerOrders where co.Status == 7 && co.CompletedDate > dt select co).ToList();
}
これは、データを取得するための最も効率的な方法ですか? (コレクションが列挙されるまで顧客の注文が取得されないことを理解していますが、それでもシステムは、日付の後に完了したものを見つけるために潜在的に数千のレコードを処理する必要があります。ステータスおよび/または日付を元のクエリ?
次のいくつかのバリエーションを試しましたが、どれも機能しません。
where (d.ParentBusinessId == parentId && (d.CustomerOrders.Select(co => co.Status == 7)))
それとも、このプロセスをオーバーエンジニアリングしていますか? (理論的には、データベースからデータを選択してステータスとオプションの日付を取得するメソッドが必要なため、データを Web ページに渡すときは、それを提示するだけです)