关于实体框架:将数据库从SQL Azure迁移到SQL Server后的数据插入问题

Data insert issue after migrating database from SQL Azure to SQL Server

我有一个SQL Azure数据库,它有一个身份主要。
使用SQL Server导入和导出向导后,我将数据传输到我的SQL Server 2008 R2数据库。

我的ASP.NET应用程序运行正常并读取数据。 但是当我尝试在表'User'中插入一个值时,它会给我一个错误:
无法在"UserId"列中插入null。

原因是它无法生成标识值。

我怎样才能克服这个问题?

PS:我尝试从SQL Azure生成脚本,但SQL文件大小为500MB,我的主机不允许运行这么大的脚本。

编辑:使用Entity Framework进行数据访问。 UserId字段具有IDENTITY property(1,1)。

编辑尝试从SQLAzure Migration工具创建架构,然后使用导入/导出数据复制数据。
但是向导不保持行之间的关系。


问题是向导试图插入主键值,默认情况下禁用。并且在不插入主键的情况下,无法保持关系,从而导致整个问题。

要解决此问题并执行万无一失的迁移,请确保新架构维护所有标识列。

选择源表和目标表时,对于特定表,单击"编辑映射"并选中"启用标识插入"复选框以启用主键值的插入,从而保持结构和关系的完整性。


数据导入/导出向导不会保留数据库对象的整个结构。

即它只会复制数据,而不是数据所适合的表的整个结构 - 包括身份和密钥定义。

您可以导入数据,然后手动设置所有主键和默认字段以匹配所需的数据库定义,或者您可以连接到Azure实例并使用generate script选项在复制之前在2008数据库中生成架构。

但真正的答案是您应该使用复制数据库向导来完成此任务,这适用于Azure。它是为这种情况设计的。