我已经查看了有关SO以及博客和官方MS文档的其他问题,但我找不到正确的方法。 我想要实现的目标:
因此,遵循MS教程(即https://msdn.microsoft.com/en-gb/data/jj591621.aspx)版本1为Schema v1创建表:
然后我打开软件包管理器控制台,输入:Enable-Migrations
,创建用于迁移的类(201610091823367_InitialCreate.cs和Configuration.cs)。然后我按照教程中的建议修改Blog类以获得新的属性Url并运行Add-Migration AddBlogUrl
,这将创建201610091830008_AddBlogUrl.cs
另外,我添加了
Database.SetInitializer(new MigrateDatabaseToLatestVersion<BlogContext, Configuration>());
到main,所以当应用程序启动时,它应该自动迁移。 我启动了应用程序v2,一切都运行良好。该表现在有了新专栏。
当我再次启动应用程序v2时,它会崩溃,但例外情况为:
未处理的异常:
System.Data.SqlClient.SqlException: There is already an object named 'Blogs' in the database.
以及所有相关的堆栈跟踪。
所以看起来它没有意识到它在数据库中有最新的模式,所以它试图再次创建表。我在InitialCreate
类中添加了一个断点,方法Up
并调用它。我很惊讶!
我也试过了另一种方法:
AutomaticMigrationsEnabled = true;
运行app v2b。结果是一样的。 任何人都可以帮我理解什么是错的,什么是正确的方法? 你能否确认在此期间我可以在没有启用迁移的情况下部署SCHEMA v1 ?
我希望实体能够涵盖这种情况。