当我想向DB添加新模型时
Violation of PRIMARY KEY constraint 'PK_dbo.Factors'. Cannot insert duplicate key in object 'dbo.Factors'. The duplicate key value is (1001).
The statement has been terminated.
我的代码:
var factor = new Factor();
factor.UserId = UserId;
Db.Factors.Add(factor);
Db.SaveChanges();
模特地图:
在我的设计因素中必须启动whit 1000和我的代码:
protected override void Seed(BreDbContext context)
{
context.Database.ExecuteSqlCommand("DBCC CHECKIDENT('Factors', RESEED, 1000);");
}
答案 0 :(得分:0)
我认为这是因为你插入了PRIMARY KEY字段中的值,这意味着PRIMARY KEY值必须是唯一值
例如,你有一个值为的表:
id name
1 john
2 serah
3 crish
但之后你插入一个新值:
3 victoria
在上面的情况下会抛出一个错误,因为在表中已经有一个id = 3的值(crish)// id字段是唯一的(PRIMARY KEY)
OR
在其他问题情况下,如果ur表与其他表有关系,如果你想在FOREIGN KEY Table中插入一个新值,你需要先在PRIMARY KEY Table中插入,因为FOREIGN KEY需要引用PRIMARY KEY值。 我希望我的回答可以帮助你
答案 1 :(得分:0)
我找到解决方案。
问题描述
在迁移种子
中的代码下运行时context.Database.ExecuteSqlCommand("DBCC CHECKIDENT('Factors', RESEED, 1000);");
此代码按请求运行,此代码销毁数据库。 删除此代码并在代码
下面插入protected override void Seed(BreDbContext context)
{
//context.Database.ExecuteSqlCommand("DBCC CHECKIDENT('Factors', RESEED, 1000);");
for (int i = 0; i < 999; i++)
{
context.factors.add(new factor());
}
context.savechanges();
var rang = context.factors.tolist();
context.factors.removerange(rang);
context.savechanges();
}
创建数据库后,在种子方法中注释所有代码。