【发布时间】:2014-01-20 08:36:57
【问题描述】:
这是我的模型。我有车辆和驾驶员的一对一映射。我将首先创建车辆,然后将驾驶员映射到车辆。
public class Driver
{
public int Id { get; set; }
public String Name { get; set; }
public int VehicleId { get; set; }
public virtual Vehicle Vehicle { get; set; }
}
public class Vehicle
{
public int Id { get; set; }
public String Name { get; set; }
public virtual Driver Driver { get; set; }
public int VehicleGroupId { get; set; }
public virtual VehicleGroup Vehicles { get; set; }
}
我想在 Driver 类中使用 VehicleId 属性来保存驾驶员正在驾驶的车辆的 ID。
我编写了以下 Fluent API 代码:
modelBuilder.Entity<Vehicle>()
.HasRequired(d => d.Driver)
.WithRequiredPrincipal();
但它会在 Drivers 表中创建一个新列 - Vehicle_VehicleId 并将其映射到 Vehicle 表中的 VehicleId。我想映射 Driver 表的 VehicleId。
另外,我是 EF 和 Fluent API 的新手。我发现在 WithRequiredDependent 和 WithRequiredPrincipal 之间进行选择非常令人困惑。如果你能用简单的话来描述它会很高兴。谢谢。
【问题讨论】:
-
您可以将依赖项和委托人视为实体框架问您:“如果要插入这些表的记录,我应该先在哪里插入记录,表 A 还是表 B?”如果选择表 A 作为主体,表 B 将包含表 A 的外键。顺便提一下,Fluent API 有很好的 c# 文档,请仔细阅读“WithRequiredDependent”和“WithRequiredPrincipal”的说明。
标签: c# entity-framework