提问人:Unorthodox 提问时间:11/11/2023 最后编辑:marc_sUnorthodox 更新时间:11/11/2023 访问量:29
如何在实体框架中与指向具有不同属性数的主键的外键建立关系
How to make a relation in Entity Framework with foreign keys that point to primary keys with a different number of properties as the primary key
问:
modelBuilder.Entity<Vehicle>()
.HasOne(vehicle => vehicle.Driver)
.WithOne(driver => driver.Vehicle)
.HasForeignKey<Driver>(fk => fk.SSN)
.HasPrincipalKey<Vehicle>(fk => new { fk.ChassisNr, fk.LicensePlate});
我有一个带有 A 和组合作为 PK 的类。Vehicle
chassisnumber
licenseplate
还有一个类是主键。Driver
SSN
现在,当我尝试添加此迁移时,我收到以下消息:
在实体类型“Driver”上为外键 {'SSN'} 指定的属性数与实体类型“Vehicle”上的主键 {'ChassisNr', 'LicensePlate'} 中的属性数不匹配
有没有可能实现我正在做的事情?
我需要这两个模型之间的 0/1 到 0/1 关系。
答:
0赞
Moho
11/11/2023
#1
您需要在依赖实体上创建一个与主体实体的主键匹配的外键。您希望哪个实体成为委托人和从属实体取决于您。对于主体和从属 ,应将 添加到 。对于您在问题中的设置,其中主体在哪里,您需要添加构成 PK 的两个属性,然后在定义 FK 时创建一个匿名对象:Driver
Vehicle
SSN
Vehicle
Vehicle
Vehicle
Driver
.HasForeignKey<Driver>( d => new
{
d.ChassisNr,
d.LicensePlate
} );
https://learn.microsoft.com/en-us/ef/core/modeling/relationships/one-to-one
评论