我想向现有表添加一个非空外键列。
环境:EF 6、代码优先、基于代码的迁移
//Code from Migration class for new entity Currency
CreateTable("dbo.Currency",
c => new
{
CurrencyID = c.Int(nullable: false, identity: true),
Code = c.String(nullable: false, maxLength: 3, fixedLength: true, unicode: false),
Denomination = c.String(nullable: false, maxLength: 50, unicode: false),
})
.PrimaryKey(t => t.CurrencyID);
AddColumn("dbo.Collection", "CurrencyID", c => c.Int(nullable: false));
//Code from Seed() method in Configuration class
context.Currencies.AddOrUpdate(
new Currency
{
Code = "USD",
Denomination = "Dollar"
}
);
//Here i get an exception. Collection is the existing table
context.Database.ExecuteSqlCommand( "update collection set CurrencyID = 1 );
异常消息:
UPDATE 语句与 FOREIGN KEY 约束冲突
“FK_dbo.Collection_dbo.Currency_CurrencyID”。冲突发生在
表“dbo.Currency”,列“CurrencyID”。
问题已解决,这里按顺序列出我遵循的步骤:
- 将外键属性映射更改为“不需要”
- 仅作为主键值的种子
- 更新数据库
- 将属性更改回“必需”
- 添加新的迁移并为外键列的值添加种子
- 更新数据库
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)