Entity framework core 使用Fluent API在两个表之间创建一对一的关系';备用键

Entity framework core 使用Fluent API在两个表之间创建一对一的关系';备用键,entity-framework-core,entity-framework-core-5.0,Entity Framework Core,Entity Framework Core 5.0,我正在尝试连接两个数据库中的两个表,其中的表具有自动递增、主键和字符串、备用键。已填充每个系统表中的备用键,以允许比较(合并)数据 我有两门课: 单位(系统A) 车辆(系统B) 我想在Unit.UnitNumber=Vehicle.VehicleID之间创建一对一关系 我试图定义此关系,但未成功: modelBuilder.Entity<Vehicle>() .HasAlternateKey("VehicleID"); modelBuilder.Enti

我正在尝试连接两个数据库中的两个表,其中的表具有自动递增、主键和字符串、备用键。已填充每个系统表中的备用键,以允许比较(合并)数据

我有两门课:

单位(系统A)

车辆(系统B)

我想在
Unit.UnitNumber=Vehicle.VehicleID
之间创建一对一关系

我试图定义此关系,但未成功:

modelBuilder.Entity<Vehicle>()
    .HasAlternateKey("VehicleID");

modelBuilder.Entity<Unit>()
    .HasAlternateKey("UnitNumber");

modelBuilder.Entity<Vehicle>()
    .HasOne<Unit>()
    .WithOne()
    .HasForeignKey("VehicleID");

modelBuilder.Entity<Unit>()
    .HasOne<Vehicle>()
    .WithOne()
    .HasForeignKey("UnitNumber");
modelBuilder.Entity()
.HasaAlternateKey(“车辆ID”);
modelBuilder.Entity()
.HasaAlternateKey(“单位编号”);
modelBuilder.Entity()
.HasOne()
.WithOne()
.HasForeignKey(“车辆ID”);
modelBuilder.Entity()
.HasOne()
.WithOne()
.HasForeignKey(“单位编号”);

我错过了什么?

这比预期的更困难:

modelBuilder.Entity<Vehicle>()
    .HasOne(v => v.Unit)
    .WithOne(u => u.Vehicle)
    .HasForeignKey<Unit>(u => u.UnitNumber)
    .HasPrincipalKey<Vehicle>(v => v.VehicleID);
modelBuilder.Entity()
.HasOne(v=>v.Unit)
.一辆(u=>u.Vehicle)
.HasForeignKey(u=>u.UnitNumber)
.HasPrincipalKey(v=>v.VehicleID);

必须选择一个实体作为主要实体(主体),分别选择另一个实体作为次要实体(从属实体)。主体是您首先创建的主体,可以不存在其他主体而存在。不带主体的依赖项不能存在。一旦做出决定,就可以配置关系。
modelBuilder.Entity<Vehicle>()
    .HasAlternateKey("VehicleID");

modelBuilder.Entity<Unit>()
    .HasAlternateKey("UnitNumber");

modelBuilder.Entity<Vehicle>()
    .HasOne<Unit>()
    .WithOne()
    .HasForeignKey("VehicleID");

modelBuilder.Entity<Unit>()
    .HasOne<Vehicle>()
    .WithOne()
    .HasForeignKey("UnitNumber");
modelBuilder.Entity<Vehicle>()
    .HasOne(v => v.Unit)
    .WithOne(u => u.Vehicle)
    .HasForeignKey<Unit>(u => u.UnitNumber)
    .HasPrincipalKey<Vehicle>(v => v.VehicleID);