modelBuilder.Entity<Vehicle>()
.HasOne(vehicle => vehicle.Driver)
.WithOne(driver => driver.Vehicle)
.HasForeignKey<Driver>(fk => fk.SSN)
.HasPrincipalKey<Vehicle>(fk => new { fk.ChassisNr, fk.LicensePlate});
我有一堂课
Vehicle
,其中chassisnumber
和licenseplate
组合为PK。
还有一个以
Driver
作为主键的 SSN
类。
现在,当我尝试添加此迁移时,我收到以下消息:
为实体类型“Driver”上的外键 {'SSN'} 指定的属性数量与实体类型“Vehicle”上的主键 {'ChassisNr', 'LicensePlate'} 中的属性数量不匹配
是否有可能实现我正在做的事情?
我需要这 2 个模型之间的 0/1 到 0/1 关系。
您需要在依赖实体上创建与主体实体的主键匹配的外键。您想成为哪个实体的主要实体和从属实体取决于您。对于主体
Driver
和从属 Vehicles, you would add
SSNto
Vehicle. For the setup you have in your question where
Vehicleis the principal, you would need to add the two properties that make up
Vehicle’s PK to
Driver`,然后在定义 FK 时创建一个匿名对象:
.HasForeignKey<Driver>( d => new
{
d.ChassisNr,
d.LicensePlate
} );
https://learn.microsoft.com/en-us/ef/core/modeling/relationships/one-to-one