Entity framework EF4,Npgsql,M:M关系;未实现该方法或操作。";:/
我对EF4和npgsql提供者的多对多关系有问题 我有3个表:Order、OrderStatus和OrderStatusDict(字典)。OrderStatus是一种变更日志-每个订单的状态变更都会添加到OrderStatus表中,并包含其实际日期和新状态我需要获取所有订单,其中status.OrderStatusDict.OrderStatusName==“待定”,所以我这样做:Entity framework EF4,Npgsql,M:M关系;未实现该方法或操作。";:/,entity-framework,linq-to-entities,entity-framework-4,Entity Framework,Linq To Entities,Entity Framework 4,我对EF4和npgsql提供者的多对多关系有问题 我有3个表:Order、OrderStatus和OrderStatusDict(字典)。OrderStatus是一种变更日志-每个订单的状态变更都会添加到OrderStatus表中,并包含其实际日期和新状态我需要获取所有订单,其中status.OrderStatusDict.OrderStatusName==“待定”,所以我这样做: var lst = (from o in db.Order where o.OrderSta
var lst = (from o in db.Order
where o.OrderStatus
.OrderByDescending(s => s.Date)
.FirstOrDefault()
.OrdereStatusDict.OrderStatusName == "Pending"
select o).ToList();
我有一个例外:
准备时出错
命令定义。看内在
细节例外。
数据:{System.Collections.ListDictionaryInternal}
内部异常:{”方法或
操作未实现。“}
看起来OrderByDescending终止了我的查询,因为如果我评论
.OrderByDescending(s => s.Date)
一切正常,但我从db获得最早的订单状态:/
你能帮我吗?这是提供商的原因还是EF问题?你有什么想法可以让我用另一种方式得到吗?我不会用这种方式写查询 尝试: 我猜状态比较应该不区分大小写
请注意,如果“最大日期”不是唯一的,则我的查询的行为与您的查询不同。我猜它要么是独一无二的,要么就是我的方式是正确的。谢谢克雷格,你为我节省了几个小时的工作:)我真的很感谢你的帮助!
var lst = (from o in db.Order
let maxDate = o.OrderStatus.Max(s => s.Date)
where o.OrderStatus.Any(s => s.Date == MaxDate
&& s.OrdereStatusDict.OrderStatusName.Equals("Pending", StringComparison.OrdinalIgnoreCase))
select o).ToList();