gpt4 book ai didi

entity-framework - 使用 EF 4.3 运行更新数据库时出错

转载 作者:行者123 更新时间:2023-12-04 05:58:00 24 4
gpt4 key购买 nike

我将一个项目升级到 Entity Framework 4.3 并启用了该项目的迁移。

但是,在运行 Update-Database 命令时出现此错误:

无法构建下一次迁移,因为目标数据库是使用早于 EF 4.3 的 Code First 版本创建的,并且不包含迁移历史记录表。要开始针对此数据库使用迁移,请确保当前模型与目标数据库兼容并执行迁移更新过程。 (在 Visual Studio 中,您可以使用来自包管理器控制台的 Update-Database 命令来执行迁移更新过程)。

基本上,它告诉我运行给我错误的相同命令(Update-Database)。

有任何想法吗?

不完全是一种“有趣”的方式来做到这一点,但我让应用程序创建了一个新数据库,它创建了一个名为“__MigrationHistory”的系统表。然后我运行以下脚本在我的旧数据库上创建该表。我还创建了一个脚本来将新数据库中存在的一行复制到旧数据库中。

如果来自 Microsoft 或社区的人知道这样做的更有效方法,请在此处发布!

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[__MigrationHistory](
[MigrationId] [nvarchar](255) NOT NULL,
[CreatedOn] [datetime] NOT NULL,
[Model] [varbinary](max) NOT NULL,
[ProductVersion] [nvarchar](32) NOT NULL,
CONSTRAINT [PK___MigrationHistory] PRIMARY KEY CLUSTERED
(
[MigrationId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

最佳答案

当你跑 Enable-Migrations ,脚本可能没有创建初始迁移,特别是如果您的模型与数据库不匹配,或者您的 DbContext类在不同的项目中定义。

我不确定将迁移添加到现有 4.3 之前的数据库的“正确方法”是什么,但最简单的方法是转储数据库。把 table 扔进去……

确保 Migrations 文件夹中的配置文件具有正确的上下文类型,然后 Add-Migration Initial .将构建一个大类,代表您当前的模型。

现在 Update-Database将无怨无悔地奔跑。

如果你在db中有你关心的数据,你可以作弊并添加__MigrationHistory迁移过程创建到数据库的先前备份的表。删除 EdmMetadata和迁移不应该更明智。

希望真正知道如何将迁移添加到现有 EF Code First 数据库的人会有更顺畅的升级步骤?

关于entity-framework - 使用 EF 4.3 运行更新数据库时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9279671/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com