Ash*_*ran 11 c# entity-framework
这是我的模特.我有一对一的车辆和司机映射.我将首先创建车辆,然后将驾驶员映射到车辆.
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; }
}
Run Code Online (Sandbox Code Playgroud)
我想在Driver类中使用VehicleId属性来保持驱动程序正在驱动的车辆ID.
我编写了以下Fluent API代码:
modelBuilder.Entity<Vehicle>()
.HasRequired(d => d.Driver)
.WithRequiredPrincipal();
Run Code Online (Sandbox Code Playgroud)
但它在Drivers表中创建了一个新列 - Vehicle_VehicleId并将其映射到Vehicle表上的VehicleId.我想要VehicleId的Driver表来映射.
此外,我是EF和Fluent API的新手.我发现在WithRequiredDependent和WithRequiredPrincipal之间选择是非常困惑的.如果你能用简单的话来形容它,我会很高兴的.谢谢.
jno*_*ovo 23
这一行:
public int VehicleId {get; 组; }
通过代码约定告诉EF 您希望外键Driver指向Vehicle.
下面告诉你想要一个1 EF:1关系Driver到Vehicle:
公共虚拟车辆车辆{get; 组; }
您应该删除它们并坚持使用Fluent API配置.
关于WithRequiredPrincipal与WithRequiredDependent:
您正在指定Vehicle和之间的强制关系Driver,从导航Vehicle到Driver,因此:车辆1 - > 1Driver
(车辆是主要和Driver依赖,因为导航属性位于Vehicle并指向Driver.)
modelBuilder.Entity<Vehicle>()
.HasRequired(d => d.Driver)
.WithRequiredDependent();
Run Code Online (Sandbox Code Playgroud)
要指定之间的强制关系Vehicle和Driver,具有导航从Driver到Vehicle,从而:Vehicle1 < - 1Driver
(Vehicle是依赖项和Driver主体,因为导航属性位于Driver指向Vehicle.)
这两个是类似的:
modelBuilder.Entity<Vehicle>()
.HasRequired(v => v.Driver)
.WithRequiredPrincipal();
modelBuilder.Entity<Driver>()
.HasRequired(d => d.Vehicle)
.WithRequiredDependent();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12542 次 |
| 最近记录: |