Die ALTER TABLE-Anweisung in Konflikt mit der FOREIGN KEY-Einschränkung
Wenn ich führen Sie die folgenden Migrations -, ich erhalte die folgende Fehlermeldung:
Die ALTER TABLE-Anweisung in Konflikt mit der FOREIGN KEY-Einschränkung
Ich habe eine vorhandene Datenbank und die Umgestaltung der Modell, um eine navigation-Eigenschaft.
Sehen, das ursprüngliche Modell und dann das neue Modell:
Original Modell:
public class Student
{
public int ID { get; set; }
public string Name { get; set; }
public string Country { get; set; }
}
Neues Modell:
public class Student
{
public int ID { get; set; }
public string Name { get; set; }
public int CountryID { get; set; }
public virtual Country Country { get; set; }
}
public class Country
{
public int ID { get; set; }
public string Country { get; set; }
}
Add-Migration
navigation Immobilie:
public override void Up()
{
CreateTable(
"dbo.Countries",
c => new
{
ID = c.Int(nullable: false, identity: true),
CountryName = c.String(),
})
.PrimaryKey(t => t.ID);
AddColumn("dbo.Students", "CountryID", c => c.Int(nullable: false));
CreateIndex("dbo.Students", "CountryID");
AddForeignKey("dbo.Students", "CountryID", "dbo.Countries", "ID", cascadeDelete: true);
DropColumn("dbo.Students", "Country");
}
Update-Database
Fehler:
System.Daten.SqlClient.SqlException (0x80131904): Die ALTER TABLE-Anweisung in Konflikt mit der FOREIGN KEY-Einschränkung "FK_dbo.Students_dbo.Countries_CountryID". Der Konflikt ist aufgetreten in Datenbank "aspnet-navprop-20141009041805", Tabelle "dbo.Ländern", Spalte 'ID'.
InformationsquelleAutor Barry MSIH | 2014-10-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe das gleiche problem, meine Tabelle hatte Daten daher änderte ich die foreign-key-Spalte, um null-Werte zu.
Sollten Sie den code ändern möchten, dann führen Sie erneut die Update-Datenbank -Verbose
InformationsquelleAutor Mecit Semerci
Ich hatte das gleiche Problem und verkürzt die Tabelle mit dem Fremdschlüssel records, und es gelang.
InformationsquelleAutor Paul Oster
Wenn es eine Daten in der Tabelle (in der Student-Tabelle) löschen und dann wieder erneut versuchen.
InformationsquelleAutor Hakam Fostok
Gegen Schüler Unternehmen, das Sie markieren können, Ihre CountryId-Eigenschaft als null mit einem Fragezeichen angehängt, um die Art, also
InformationsquelleAutor Ciaran Gallagher