.net 如何在实体框架中建立一个关系,该关系的外键指向具有不同数量属性的主键

9rygscc1  于 12个月前  发布在  .NET
关注(0)|答案(1)|浏览(91)
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,其中chassisnumberlicenseplate组合为PK。
还有一个Driver类,它的主键是SSN
现在,当我尝试添加此迁移时,我收到以下消息:
为实体类型“Driver”上的外键“SSN "指定的属性数与实体类型”Vehicle“上的主键”ChassisNr“,”LicensePlate“中的属性数不匹配
我做的事有可能实现吗?
我需要这两个模型之间的0/1到0/1关系。

esbemjvw

esbemjvw1#

您需要在依赖实体上创建一个与主体实体的主键匹配的外键。要成为主体实体和依赖实体取决于您。对于主体Driver和依赖Vehicle,您可以将SSN添加到Vehicle。对于您的问题中的设置,其中Vehicle是主体实体,您需要将构成Vehicle的PK的两个属性添加到Driver,然后在定义FK时创建一个匿名对象:

.HasForeignKey<Driver>( d => new 
{ 
    d.ChassisNr, 
    d.LicensePlate
} );

字符串
https://learn.microsoft.com/en-us/ef/core/modeling/relationships/one-to-one

相关问题