使用 EF 6.1.2。代码第一。我有这些模型:
public class Automobile
{
public int Id { get; set; }
public string Make { get; set; }
public string Model { get; set; }
public string Vin { get; set; }
public int Year { get; set; }
public Engine EngineType { get; set; }
public Transmission TransmissionType { get; set; }
public DriveTrain DriveTrainType { get; set; }
public ICollection<Accessory> Accessories { get; set; }
}
public class Transmission
{
public string Name { get; set; }
public string Description { get; set; }
public int Speeds { get; set; }
public bool IsAutomatic { get; set; }
}
public class Accessory
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int AutomobileId { get; set; }
}
public class DriveTrain
{
public bool IsAwd { get; set; }
public bool IsHeavyDuty { get; set; }
public string Name { get; set; }
}
public class Engine
{
public int Id { get; set; }
public string Size { get; set; }
public string Brand { get; set; }
public int cylinders { get; set; }
public int AutomobileId { get; set; }
public ICollection<Automobile> AutoMobiles { get; set; }
}
我的存储目标是使用实体拆分,最终只有 2 个表:汽车和配件。因为Transmission实体和DriveTrain实体都没有主键,所以 EF6 会自动将这些表合并到我的主表汽车中进行存储。这是很好的默认行为,我喜欢它。我的问题是在解决引擎实体时出现的。请注意,它有一个在概念上与汽车主键不同的主键。已经使用了一些流畅的 API 配置,我还没有能够成功地将Engine实体合并到汽车中存储方面的实体。我发现这篇 MSDN 文章: http: //msdn.microsoft.com/en-us/data/JJ591617.aspx#2.8 但这个例子需要相同的共享主键。这两个实体有不同的主键。
在保持上述确切模式的同时实现我的目标的最佳方法是什么?