[英]Entity Framework with Prism MVVM: How to get an auto incremented id to a CollectionViewSource?
[英]Insert a specific id into auto incremented field in MySQL with Entity Framework 5
所以这就是我的情况。
我有一个很老的数据库,我的意思是很多数据。 但是我最终创建了一个新的数据库结构,现在我想将旧数据库中的数据移动到新数据库中。 作为一名程序员,我并不热衷于手动操作,这就是我制作程序的原因。
现在我的问题是:在新数据库中添加新项目时,我无法设置它的id,这对于旧数据库中存在的不同链接引用和一般外键引用至关重要。
因此,我的问题是:如何通过在C#中首先使用数据库的Entity Framework 5 ,将指定的id整数插入到MySQL数据库中具有auto_increment的字段中?
这是我的新数据库的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
您必须关闭身份插入,插入记录然后打开身份插入
解决方案我找到了在插入表之前改变表的位置。 这基本上是其他人给出的解决方案,但是我需要做几次转弯。
这就是我做的:
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;
除了使用Entity Framework 6之外,我遇到了同样的问题,这就是我解决它的方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.