У меня есть следующие миграции Я пытаюсь применить:Добавить поле и присвоить значение для всех существующих записей
public override void Up()
{
CreateTable(
"dbo.pltblQuoteRoHSStatus",
c => new
{
QuoteRoHSStatusID = c.Int(nullable: false, identity: true),
Status = c.String(nullable: false, maxLength: 20),
})
.PrimaryKey(t => t.QuoteRoHSStatusID)
.Index(t => t.Status, unique: true, name: "IX_RoHSStatusIndex");
AddColumn("dbo.tblQuoteGeneral", "QuoteRoHSStatusID", c => c.Int(nullable: false));
CreateIndex("dbo.tblQuoteGeneral", "QuoteRoHSStatusID");
AddForeignKey("dbo.tblQuoteGeneral", "QuoteRoHSStatusID", "dbo.pltblQuoteRoHSStatus", "QuoteRoHSStatusID", cascadeDelete: true);
DropColumn("dbo.tblQuoteGeneral", "RoHS");
}
Когда я бегу update-database
, я получаю следующее сообщение об ошибке:
The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_dbo.tblQuoteGeneral_dbo.pltblQuoteRoHSStatus_QuoteRoHSStatusID". The conflict occurred in database "WebPDC", table "dbo.pltblQuoteRoHSStatus", column 'QuoteRoHSStatusID'.
я имеют существующие записи в tblQuoteGeneral
. Поэтому мне нужно присвоить значение (3
) QuoteRoHSStatusID
для всех существующих записей. Я попробовал следующую модификацию автоматически сгенерированной миграции, показанной выше:
public override void Up()
{
CreateTable(
"dbo.pltblQuoteRoHSStatus",
c => new
{
QuoteRoHSStatusID = c.Int(nullable: false, identity: true),
Status = c.String(nullable: false, maxLength: 20),
})
.PrimaryKey(t => t.QuoteRoHSStatusID)
.Index(t => t.Status, unique: true, name: "IX_RoHSStatusIndex");
AddColumn("dbo.tblQuoteGeneral", "QuoteRoHSStatusID", c => c.Int(nullable: true));
Sql("UPDATE dbo.tblQuoteGeneral SET QuoteRoHSStatusID = 3");
AlterColumn("dbo.tblQuoteGeneral", "QuoteRoHSStatusID", c => c.Int(nullable: false));
CreateIndex("dbo.tblQuoteGeneral", "QuoteRoHSStatusID");
AddForeignKey("dbo.tblQuoteGeneral", "QuoteRoHSStatusID", "dbo.pltblQuoteRoHSStatus", "QuoteRoHSStatusID", cascadeDelete: true);
DropColumn("dbo.tblQuoteGeneral", "RoHS");
}
Я все еще получаю ту же ошибку. Что я делаю не так?
EDIT: Я хотел бы выполнить вышеуказанное в одной миграции.
http://stackoverflow.com/questions/22665416/ef-6-code-based-migration-add-not-null-property-to- существующий объект –
** @ E-Bat **, спасибо, что указал мне на этот вопрос. Я уже знал, что могу разделить миграцию. Я искал способ сделать это за один переход. Я ответил на свой вопрос, рассказывая, как это можно сделать при одном переносе. – Linger
О, я пропустил Редактировать. –