C# · 12月 30, 2021

c# – EntityFramework 6.0 CreateDatabaseIfNotExists首先创建数据库

我究竟做错了什么.我有一个用户DbContext设置和工作,当我最初创建的Code-First与power shell它一切正常.

我在应用程序启动时按预期实现了Database Initializer.

Database.SetInitializer<UserDbContext>(new CreateDatabaseIfNotExists<UserDbContext>());

只是为了测试它是否真的创建了数据库,我实际上删除了数据库,现在我被卡住了将不会创建数据库.我使用sql Server 2012,任何想法可能是错的.

我得到的错误信息是

system.invalidOperationException: Migrations is enabled for context ‘UserDbContext’ but the database does not exist or contains no mapped tables. Use Migrations to create the database and its tables,for example by running the ‘Update-Database’ command from the Package Manager Console.

我已经尝试从包管理器控制台,它仍然给我相同的消息.

解决方法 最后想出了解决方案,不知道为什么或什么.将我的数据库初始化程序更改为MigrateDatabaseToLatestVersion而不是CreateDatabaseIfNotExists工作. Database.SetInitializer<UserDbContext>(new MigrateDatabaseToLatestVersion<UserDbContext,Configuration>());