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
,从而:Vehicle
1 < - 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 次 |
最近记录: |