フィルター処理された結果を取得するためにサーバーに送信する前にクエリを適切に構築するのに多くの問題があります。アイテムの基準に一致する一連の注文のみを取得するようにリファクタリングします。もちろん、エラーが発生します: 指定された型メンバー 'ReceivableQuantity' は LINQ to Entities ではサポートされていません。初期化子、エンティティ メンバー、およびエンティティ ナビゲーション プロパティのみがサポートされています。作業コードの下:
pendingOrders = from o in this.GetAll()
where o.OrderItems.Where(i => i.ReceivableQuantity > 0).Count() > 0
select new Order()
{
OrderNumber = o.OrderNumber,
Comments = o.Comments,
FinalApprover = o.FinalApprover,
OrderDate = o.OrderDate,
Requisitioner = o.Requisitioner,
SupplierName = o.SupplierName,
ID = o.ID,
ShoppingCartName = o.ShoppingCartName,
OrderItems = (from i in o.OrderItems
where i.ReceivableQuantity > 0
select i).OrderBy(i => i.LineNumber).ToList()
};
これは、OrderItem クラスの NotMapped プロパティです。
[NotMapped]
public decimal ReceivableQuantity
{
get
{
if (Order == null)
return 0;
decimal response;
response = this.MatchedQuantity - this.ReceivedQuantity;
if (response >= 0)
return response;
else
throw new ArgumentOutOfRangeException("Receivable Quantity must be greater than 0.");
}
}
MatchedQuantity と ReceivedQuantity も NotMapped プロパティなので、これは本当に拡張されていると思います。
それを使用するサイトがすでに実行されており、データベースが毎日成長しているため、コードを使用する機能が非常に遅くなっているので、私が使用すべき最善のアプローチは何ですか。
よろしくお願いします。リオ。