我有几个产品像HotelProduct,FlightProduct ..。它从BaseProduct类派生而来。这些产品的表将以TPC的方式在数据库中生成。有一个具有BaseProduct的OrderLine类。

我的问题是,当我选择一个带有相关产品的OrderLine时,我不知道如何将BaseProduct转换为派生产品。例如,我有这样的查询:
var order = (from odr in _context.Orders
join orderLine in _context.OrderLines on odr.Id equals orderLine.OrderId
join hotel in _context.Products.OfType<HotelProduct>() on orderLine.ProductId equals hotel.Id
where odr.UserId == userId && odr.Id == orderId
orderby odr.OrderDate descending
select odr).SingleOrDefault();在OrderLine中,我有BaseProduct属性,而不是HotelProduct属性。在OrderLine或任何其他解决方案中,有没有办法将BaseProduct转换为派生类?
发布于 2014-08-24 00:16:25
我认为使用TPC策略不可能实现您想要做的事情。考虑OrderLine上的ProductId属性:它是HotelProduct表还是FlightProduct表的FK?它只能是一个,因此Product属性只能映射到HotelProduct或FlightProduct的关联。
您至少有两种选择:
ProductId/Product属性替换为OrderLine上的HotelProduct/HotelProductId和FlightProduct/FlightProductId属性,这样您就可以导航到所需的产品类型;或者,将https://stackoverflow.com/questions/25462319
复制相似问题