我在将查询正确构建之前遇到很多问题,然后再将其发送到服务器以检索过滤结果,fisrt我正在查询订单的孔结果集,然后使用计算属性应用订单商品过滤器,当试图重构只获得与项目标准匹配的订单集时,我当然得到错误:LINQ to Entities中不支持指定的类型成员'ReceivableQuantity'。仅支持初始值设定项,实体成员和实体导航属性。 工作代码下方:
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属性,所以我认为这确实是在扩展。
我使用它的最佳方法是什么,现在使用它的网站已经在运行,随着数据库日益增长,使用代码的功能变得非常慢。
提前感谢您的帮助。 LIO。
答案 0 :(得分:0)
我猜您正在使用代码优先映射。这种方法在高级查询时非常有限,因为它仍然不支持SQL函数映射。因此,您有以下选择:
Database.SqlQuery
。