EF-Migrationen: Die ALTER TABLE-Anweisung in Konflikt mit der FOREIGN KEY-Einschränkung
Hatte ich diese Klassen
public class Bid : ...
{
...
[Required]
public virtual TraderUser Trader { get; set; }
}
public class TraderUser : ...
{
...
}
Ich änderte daraufhin diese Klassen in der folgenden Weise und Hinzugefügt eine neue Klasse
public class Bid : ...
{
...
[Required]
public virtual TraderUser TraderUser { get; set; }
}
public class TraderUser : ...
{
...
public int TraderCompanyId { get; set; }
[ForeignKey("TraderCompanyId")]
public virtual TraderCompany TraderCompany { get; set; }
}
public class TraderCompany : ...
{
...
}
Wenn ich ein update-Datenbank bekam ich die folgende Fehlermeldung
Die ALTER TABLE-Anweisung in Konflikt mit der FOREIGN KEY-Einschränkung
"FK_dbo.Bid_dbo.TraderUser_TraderUser_Id". Der Konflikt ist aufgetreten in
Datenbank der "LeasePlan.Entwicklung", Tabelle "dbo.TraderUser", Spalte 'Id'.
Komme ich nicht an die Datenbank zu aktualisieren. Jede Hilfe wird sehr geschätzt.
- Was Beziehungen sind, die Sie versuchen zu erreichen zwischen diesen 3 Klassen? Und gibt es irgendwelche Eigenschaften, die in der
TraderCompany
Klasse? - Ein Gebot hat ein trader user und trader user hat ein trader Unternehmen. TraderCompany nur ein paar string-Eigenschaften.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weiß nicht, wenn es zu spät ist, aber ich hatte dasselbe problem und vielleicht könnte dies helfen.
Sehe ich nicht aus deinem Beitrag, aber wahrscheinlich ist dein TraderUser Tisch hat einige Zeilen schon eingefügt. Was Sie versuchen zu erreichen, ist das erstellen der neuen Tabelle TraderCompany und erstellen Fremdschlüssel-Beziehung in TraderUser, die Punkte zu TraderCompany Tabelle.
In eine migration, die Sie versuchen zu erstellen, die nicht-nullwertfähige Fremdschlüsselbeziehung zur Tabelle, die bereits Daten enthält.
Könnten Sie versuchen, die folgenden:
Ersten migration - alles, außer dieser Linie
sollte
Diese erlauben Ihnen das erstellen von foreign-key-Spalte null-Werte zulässt.
Aktualisieren Sie Ihre TraderCompanyId Spalte für vorhandene Daten mit einer Zeile aus TraderCompany Tabelle.
Zweite migration - code Ändern aus
zu
und führen Sie Ihre migration.
Ich hoffe das wird Ihnen helfen.
Die alternative ist das hinzufügen einer SQL-Anweisung innerhalb der migration von code, um eine Zeile einfügen, bevor Sie fügt hinzu, die foreign-keys. Hier ist ein Beispiel dafür, was ich getan habe: