Сначала кажется, что вы забыли установить тип AAlternateId
.
public Guid AAlternateId { get; set; }
Затем, если вы хотите, чтобы ForeignKey AAlternateId
был связан с AlternateId
(который не является PK), вы должны использовать PrincipalKey для определения ссылочного ключа AlternateId
с уникальным ограничением .
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<A>().ToTable("A");
modelBuilder.Entity<B>().ToTable("B");
modelBuilder.Entity<B>()
.HasOne(b => b.A)
.WithOne()
.HasPrincipalKey<A>(a => a.AlternateId)
.HasForeignKey<B>(b => b.AAlternateId);
}
И результат:
CREATE TABLE [dbo].[B] (
[Id] UNIQUEIDENTIFIER NOT NULL,
[AAlternateId] UNIQUEIDENTIFIER NOT NULL,
CONSTRAINT [PK_B] PRIMARY KEY CLUSTERED ([Id] ASC),
CONSTRAINT [FK_B_A_AAlternateId] FOREIGN KEY ([AAlternateId]) REFERENCES [dbo].[A] ([AlternateId]) ON DELETE CASCADE
);