使用 Fluent API 在两个表的备用键之间创建一对一关系



我正试图连接两个数据库中的两个表,其中表具有自动递增主键和字符串替换键。每个系统表中的备用键都已填充,以便对数据进行比较(连接(。

我有两个班:

单元(系统A(

public class Unit
{
[Key]
public int ID { get; set; }
// alternate key
public string UnitNumber { get; set; }
...
public Vehicle Vehicle { get; set; }
}

车辆(系统B(

public class Vehicle
{
[Key]
public int VehicleSerialNo { get; set; }
// alternate key
public string VehicleID { get; set; }
...
public Unit Unit { get; set; }
}

我想在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<Vehicle>()
.HasOne(v => v.Unit)
.WithOne(u => u.Vehicle)
.HasForeignKey<Unit>(u => u.UnitNumber)
.HasPrincipalKey<Vehicle>(v => v.VehicleID);

最新更新