运行以下迁移时,出现以下错误:
ALTER TABLE语句与FOREIGN KEY约束冲突
我有一个现有的数据库,并将模型重构为包含导航属性。
查看原始模型,然后查看新模型:
原始模型:
public class Student
{
public int ID { get; set; }
public string Name { get; set; }
public string Country { get; set; }
}
新模型:
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
导航属性:
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
错误:
System.Data.SqlClient.SqlException(0x80131904):ALTER TABLE语句与FOREIGN KEY约束“ FK_dbo.Students_dbo.Countries_CountryID”冲突。数据库“ aspnet-navprop-20141009041805”的表“ dbo.Countries”的列“ ID”中发生了冲突。
我遇到了同样的问题,我的表中有数据,因此我将外键列更改为可为空。
AddColumn("dbo.Students", "CountryID", c => c.Int(nullable: true));
您应该像这样更改代码,然后再次运行Update-Database -Verbose
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: true));
CreateIndex("dbo.Students", "CountryID");
AddForeignKey("dbo.Students", "CountryID", "dbo.Countries", "ID", cascadeDelete: true);
DropColumn("dbo.Students", "Country");
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句