Ich versuche, dass EF Core Daten in zwei Tabellen einfügt, die wie folgt konfiguriert sind:
[img]https:// i.sstatic.net/zzBiyR5n.png[/img]
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?
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]QuantifiableRates[/code] 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]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);
[/code]
Und GlobalQuantifiableRate fließende Konfiguration:
[code]modelBuilder.Entity().HasKey(e => new { e.Id, e.Revision });
[/code]
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]migrationBuilder.AddForeignKey(
name: "FK_QuantifiableRates_GlobalQuantifiableRates_GlobalQuantifiableRateId_GlobalQuantifiableRateRevision",
table: "QuantifiableRates",
columns: new[] { "GlobalQuantifiableRateId", "GlobalQuantifiableRateRevision" },
principalTable: "GlobalQuantifiableRates",
principalColumns: new[] { "Id", "Revision" },
onDelete: ReferentialAction.Cascade);
[/code]
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?