我有两个表(FactorItems
和Products
),我的Factoritems
表包含列Id, ProductId, Qty, IsBuy
,而Products
表包含列Id
, Name
,...。
我想使用代码来选择我的产品,其中我的Qty
列中有一个值(用于显示索引中流行的Products
),并且我有一个外键来自{ ProductId
表到FactorItems
表的Id
列中。
然后我在ASP.NET MVC中使用虚拟视图模型:
Product
我从model.BestSellersProducts = blProduct.Select().OrderByDescending(p => p.FactorItems.Select(c => c.Qty)).take(3);
的索引中收到此错误:
EntityFramework.SqlServer.dll中发生了'System.ArgumentException'类型的异常,但未在用户代码中处理
其他信息:DbSortClause表达式的类型必须与顺序可比。
答案 0 :(得分:1)
log4j.logger.com.amazonaws=DEBUG
log4j.logger.org.apache.hadoop.fs.s3a=DEBUG
log4j.logger.com.amazonaws.request=DEBUG
log4j.logger.org.apache.http=DEBUG
log4j.logger.org.apache.http.wire=ERROR
和Product
具有FactorItem
关系,如下所示:One-to-Zero-or-One
然后,您要查询的最畅销产品前三名应为:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public FactorItem FactorItem { get; set; }
}
public class FactorItem
{
[Key, ForeignKey("Product")]
public int ProductId { get; set; }
public int Qty { get; set; }
public bool IsBuy { get; set; }
public Product Product { get; set; }
}
List<Product> products = dbContext.Products.OrderByDescending(p => p.FactorItem.Qty).Take(3).ToList();
和Product
具有FactorItem
关系,如下所示:One-to-Many
然后,您要查询的最畅销产品前三名应为:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public ICollection<FactorItem> FactorItems { get; set; }
}
public class FactorItem
{
public int Id { get; set; }
[ForeignKey("Product")]
public int ProductId { get; set; }
public int Qty { get; set; }
public bool IsBuy { get; set; }
public Product Product { get; set; }
}