Имам проблем с актуализирането на моята база данни с помощта на EF код първо, след като задам външни ключове (ProcessID и SubProcessID) на моя модел като nullable.
Ето модела:
public class MyModel
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long MyModelID { get; set; }
[Display(Name = "Process")]
public int? ProcessID { get; set; }
[Display(Name = "Sub Process")]
public int? SubProcessID { get; set; }
//... some more properties here
public virtual Process Process { get; set; }
public virtual SubProcess SubProcess { get; set; }
}
Ето кода за мигриране, след като добавя миграция:
public override void Up()
{
DropForeignKey("dbo.MyTable", "ProcessID", "dbo.Process");
DropForeignKey("dbo.MyTable", "SubProcessID", "dbo.SubProcess");
DropIndex("dbo.MyTable", new[] { "ProcessID" });
DropIndex("dbo.MyTable", new[] { "SubProcessID" });
AlterColumn("dbo.MyTable", "ProcessID", c => c.Int());
AlterColumn("dbo.MyTable", "SubProcessID", c => c.Int());
CreateIndex("dbo.MyTable", "ProcessID");
CreateIndex("dbo.MyTable", "SubProcessID");
AddForeignKey("dbo.MyTable", "ProcessID", "dbo.Process", "ProcessID");
AddForeignKey("dbo.MyTable", "SubProcessID", "dbo.SubProcess", "SubProcessID");
}
public override void Down()
{
DropForeignKey("dbo.MyTable", "SubProcessID", "dbo.SubProcess");
DropForeignKey("dbo.MyTable", "ProcessID", "dbo.Process");
DropIndex("dbo.MyTable", new[] { "SubProcessID" });
DropIndex("dbo.MyTable", new[] { "ProcessID" });
AlterColumn("dbo.MyTable", "SubProcessID", c => c.Int(nullable: false));
AlterColumn("dbo.MyTable", "ProcessID", c => c.Int(nullable: false));
CreateIndex("dbo.MyTable", "SubProcessID");
CreateIndex("dbo.MyTable", "ProcessID");
AddForeignKey("dbo.MyTable", "SubProcessID", "dbo.SubProcess", "SubProcessID", cascadeDelete: true);
AddForeignKey("dbo.MyTable", "ProcessID", "dbo.Process", "ProcessID", cascadeDelete: true);
}
Съобщението за грешка, което получавам е следното:
Table 'MyDatabase.dbo.MyTable' doesn't exist
Забележка: Не успях да актуализирам базата данни само когато зададох тези външни ключове като nullable int. Но ако го направя като int, мога успешно да актуализирам база данни.
Благодаря за вашата помощ!
Up
, мисля, чеAlterColumn("dbo.MyTable", "ProcessID", c => c.Int()); AlterColumn("dbo.MyTable", "SubProcessID", c => c.Int());
трябва да е наред сам по себе си. (Също така, за да работи вашетоDown
действително, ще трябва да дадете на вашите редове с нули в колоната с външен ключ някаква ненулева препратка) - person jjj   schedule 26.05.2015