我有4个模特
工厂可以有很多车,一辆车可以有TypeA和TypeB。 TypeA和TypeB都可以存在于汽车上 即使用eager-loading 所以我的模型看起来像
public class Factory
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int FactoryID {get;set;}
public ICollection<Car> Cars {get;set;}
}
public class Car
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int CarID {get;set;}
public int FactoryID {get;set;}
public Factory Factory {get;set;}
//The Types
public TypeA TypeA {get;set;}
public TypeB TypeB {get;set;}
}
public class TypeA
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int TypeAID {get;set;}
[Key, ForeignKey("Car")]
public int CarID {get;set;}
public Car Car {get;set;}
}
public class TypeB
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int TypeBID {get;set;}
[Key, ForeignKey("Car")]
public int CarID {get;set;}
public Car Car {get;set;}
}
这是我的问题。如何将TypeA和TypeB加载到我的工厂对象中(使用Eager-Loading)
Factory factory = db.Factory.Where(f => f.FactoryID == 1).Include(f => f.Cars.Select(c => c.TypeA) ... .FirstOrDefault();
因为我不能说
Include(f=>f.Cars.Select(...).Select(...))
答案 0 :(得分:1)
您可以拥有多个包含语句。没有必要只有一个。
答案 1 :(得分:1)
只需链接include
语句:
Factory factory = db.Factory.Where(f => f.FactoryID == 1)
.Include(f => f.Cars.Select(c => c.TypeA))
.Include(f => f.Cars.Select(c => c.TypeB))
....;
顺便说一下:
为TypeA
和TypeB
引入基类可能是有意义的 - 或者甚至只使用一个类,因为我没有看到它们之间的差异。