"update-database"实体框架代码优先不再添加表格

3
我在我的网站中使用Entity Framework 5代码优先。一切都很好,我一直在使用 update-database -verbose 来更新数据库的数据或新结构和模型,但是突然间它就停止工作了,不再跟踪模型和新表的更改。
我在互联网上搜索了一下,有些人说我必须删除数据库上下文并重新创建它才能使其正常工作。但我无法这样做,项目有点大,如果我删除数据库上下文,则会影响超过4,000行。
我正在使用带有第三个更新的Visual Studio 2012,因此更新也不是解决方案。
有什么建议吗?
4个回答

5

如我所说,删除数据库上下文并没有解决我的问题。这就是我解决问题的方式。我使用SQL命令删除了表__MigrationHistory,并再次运行了update-database -verbose。

显然,自动生成的表存在问题。


4
我并不是专家,但我的表格并不是通过PM> Update-Database命令创建的,因此我采取了以下措施:
  1. 删除数据库(SQL Server)
  2. 删除迁移文件夹(根/迁移)
  3. 使用VS2019中的SQL Server对象资源管理器上的“数据库”文件夹右键单击手动重新添加数据库;确保你的数据库名称与“appsettings.json”中的数据库名称完全相同,例如(“sqlConnection”:“server=[MyServerName];database=[DB NAME];Integrated Security=true”)
  4. 在VS2019包管理器中运行“Add-Migration InitialMigration”和“Update-Database”
这样,你的表格和列就会出现。这对我起作用了。再次说明,我只是一个新手,正在摸索。

这对我有用,谢谢。如果对任何阅读此文的人有所帮助,我是在尝试从CMD运行dotnet ef database update --project命令。数据库已创建,但表格没有创建。 - undefined

1
有时它们无法生成,是因为它们在IdentityModels.cs文件中没有正确注册。在上下文创建方法之后即可。
public static ApplicationDbContext Create()
        {
            return new ApplicationDbContext();
        }

添加课程注册。
public System.Data.Entity.DbSet<PROJECT.Models.MODELNAME> MODELNAME { get; set; }

构建项目并运行 update-database -verbose 命令(-verbose 选项将显示所做的更新)。


0

从您的迁移文件开始,该文件是在执行“Add-Migration 'migrationname'”命令后创建的。 检查它所列出的更改。保留这些更改并删除其他内容。 例如,它可能会在“Up”方法中重新创建所有表格,并在“Down”方法中删除表格。删除所有不需要的更改并保存文件。 然后在PM控制台中执行“update-database”命令。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接