小编Pet*_*ley的帖子

实体框架:我可以包含()子类型的属性吗?

我在我的EF项目中设置了TPT继承,其中包含一个超类型和两个子类型.我希望获得超类型的所有对象和Include()子类型的导航属性,以达到此效果(更改类名以保护befuddled):

var thelist = DataContext.Fleets
    .Include(x => x.Vehicles.Select(y => y.EngineData)) // Not specific to Car or Truck
    .Include(x => x.Vehicles.OfType<Car>().Select(y => y.BultinEntertainmentSystemData)) // Only Cars have BultinEntertainmentSystemData
    .ToList();
Run Code Online (Sandbox Code Playgroud)

因此,我希望获得所有车辆,包括车辆是汽车时内置娱乐系统的信息.我已经看到,如果我直接从DbSet开始,这是可行的,但在这里我正在查看Fleet对象的集合属性.当我在集合属性上使用带有OfType()调用的Include()调用时,我会收到此异常消息:

Include路径表达式必须引用在类型上定义的导航属性.使用虚线路径作为参考导航属性,使用Select运算符作为集合导航属性.

是否可以在集合属性中包含()子类型的属性?

c# entity-framework

8
推荐指数
1
解决办法
643
查看次数

标签 统计

c# ×1

entity-framework ×1