entity framework对鉴别器做了案例
有没有办法将内部查询转换为子类?
如果我只查询单个子类,我会这样做
auctions.OfType().Where(auctionBid => auctionBid.AuctionBidProp)
现在我想对子类的类型做一个案例
auctions.Where(auction => (auction is AuctionBid) && ((AuctionBid) auction).Prop == 1 || (auction is AuctionBuy) && ((AuctionBuy) auction).Prop == 1)
有没有办法做到这一点?
当然上面的行给出了一个错误:LINQ to Entities仅支持转换EDM原语或枚举类型。
我看到的唯一选项是分别查询子类型并连接结果:
auctions.OfType() .Where(auctionBid => auctionBid.AuctionBidProp == 1) .Cast .Concat(auctions.OfType() .Where(auctionBuy => auctionBuy.AuctionBidProp == 1) ) .OrderBy(ab => ab.Prop1) .Skip(pages * pageSize) .Take(pageSize)
这将生成UNION ALL
查询。 与手工制作的SQL相比,这不是最有效的方法,但可能是可接受的(您必须尝试)。