【发布时间】:2015-03-09 08:51:31
【问题描述】:
这就是我的情况。
我有一个旧数据库,里面有很多,我的意思是很多数据。但是我最终创建了一个新的数据库结构,现在我想将数据从旧数据库移动到新数据库中。作为一名程序员,我不热衷于手动完成,这就是为什么我制作了一个程序来做到这一点。
现在我的问题是:向新数据库中添加新项目时,我无法设置它的 id,这对于旧数据库中存在的不同链接引用和一般外键引用至关重要。
因此,我的问题是:如何将 指定的 id 整数插入到我的 MySQL 数据库中具有 auto_increment 的字段中通过 Entity Framework 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 是自动生成的,并且是旧数据库中唯一的,这将确保不会发生重复
p>【问题讨论】:
-
在添加新项目之前在您的表上设置“IDENTITY_INSERT ON”。
-
@aria 如果我没记错的话,从网上可以找到的内容,
SET IDENTITY_INSERT Profile ON是 MSSQL 特定命令,不适用于 MySQL -
我不熟悉 MySql,但我在某处读到 MySQL 允许您手动将值插入到 AUTO_INCREMENT 列中,这已经是允许的。
-
@aria:我读过同样的东西 ^^ 但是直到我改变了
SET FOREIGN_KEY_CHECKS -
所以接受你的回答吧!
标签: c# mysql entity-framework