所以这就是我的情况。
我有一个很老的数据库,我的意思是很多数据。但是我最终创建了一个新的数据库结构,现在我想将旧数据库中的数据移动到新数据库中。作为一名程序员,我并不热衷于手动操作,这就是我制作程序的原因。
现在我的问题是:在新数据库中添加新项目时,我无法设置它的id,这对于存在于其中的不同链接引用和一般外键引用至关重要。旧数据库。
我的问题是:我如何能够将指定的id 整数插入到 MySQL 数据库中 auto_increment 的字段中通过实体框架5 ,首先在 C#中使用数据库?
这是我的新数据库的MySQL脚本:
CREATE TABLE Profile
(
_id INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
UNIQUE KEY(_id),
etc etc
)
我的插入代码:
public Profile Add(Profile item)
{
if (item == null)
{
throw new ArgumentNullException("item");
}
db.Entry(item).State = EntityState.Added;
db.SaveChanges();
return item;
}
最后一点我想告诉我,我知道这一般是不好的做法,但是数据库是空的,并且插入的id是自动生成的,并且从旧数据库中是唯一的,这将确保不会出现任何dublicates
答案 0 :(得分:1)
您必须关闭身份插入,插入记录然后打开身份插入
答案 1 :(得分:1)
解决方案我找到了在插入表之前更改表的位置。这基本上是其他人给出的解决方案,但我需要转一圈。
这就是我所做的:
SET FOREIGN_KEY_CHECKS=0;
ALTER TABLE Profile DROP PRIMARY KEY,
MODIFY _id INT PRIMARY KEY NOT NULL;
insert commmand here....
ALTER TABLE Profile DROP PRIMARY KEY,
MODIFY _id INT AUTO_INCREMENT PRIMARY KEY NOT NULL;
SET FOREIGN_KEY_CHECKS=1;
答案 2 :(得分:1)
除了使用 Entity Framework 6 之外,我遇到了同样的问题,这就是我解决它的方法: