Die MERGE-Anweisung stand in Konflikt mit der FOREIGN KEY-Einschränkung

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Die MERGE-Anweisung stand in Konflikt mit der FOREIGN KEY-Einschränkung

by Guest » 20 Jan 2025, 19:03

Ich versuche, dass EF Core Daten in zwei Tabellen einfügt, die wie folgt konfiguriert sind:
[img]https:// i.sstatic.net/zzBiyR5n.png[/img]

Code: Select all

QuantifiableRates
hat eine PK aus Id und Revision und hat eine 1:1-Beziehung (zumindest das, was ich versuche) mit GlobalQuantifiableRates über GlobalQuantifiableRateId und GlobalQuantifiableRateRevision.
Dann hat GlobalQuantifiableRates eine 1:1-Beziehung mit GlobalQuantifiableRateTypes.
Hier ist QuantifiableRates fließend eingerichtet:

Code: Select all

modelBuilder.Entity().Property(e => e.Id).HasDefaultValueSql("NEWID()")
.ValueGeneratedOnAdd();

modelBuilder.Entity().HasKey(e => new { e.Id, e.Revision });

modelBuilder.Entity().HasOne(e => e.GlobalQuantifiableRate).WithOne()
.HasForeignKey(e => new { e.GlobalQuantifiableRateId, e.GlobalQuantifiableRateRevision }).OnDelete(DeleteBehavior.Cascade);
Und GlobalQuantifiableRate fließende Konfiguration:

Code: Select all

modelBuilder.Entity().HasKey(e => new { e.Id, e.Revision });
Sieht korrekt konfiguriert aus, um die schlecht gezeichnete UML widerzuspiegeln, aber EF Core gibt beim Einfügen von Daten den folgenden Fehler aus:

Die MERGE-Anweisung stand in Konflikt mit der FOREIGN KEY-Einschränkung
"FK_QuantifiableRates_GlobalQuantifiableRates_GlobalQuantifiableRateId_GlobalQuantifiableRateRevision

In der resultierenden Migration hat EF Core Folgendes für diesen FK erstellt:

Code: Select all

migrationBuilder.AddForeignKey(
name: "FK_QuantifiableRates_GlobalQuantifiableRates_GlobalQuantifiableRateId_GlobalQuantifiableRateRevision",
table: "QuantifiableRates",
columns: new[] { "GlobalQuantifiableRateId", "GlobalQuantifiableRateRevision" },
principalTable: "GlobalQuantifiableRates",
principalColumns: new[] { "Id", "Revision" },
onDelete: ReferentialAction.Cascade);
Das Seltsame ist, dass ich in SQL Server Mgmt Studio Daten problemlos einfügen kann und die PK/FK-Eindeutigkeitsbeschränkungen respektiert werden.
Das habe ich gelesen Das könnte daran liegen, dass das Löschen von Daten durch EF Core nicht mit dem Datenmodell übereinstimmt. Stimmt das?
Was übersehe ich hier?

Top