EntityFramework 6.0 CreateDatabaseIfNotExists代码首先创建数据库
我究竟做错了什么。 我有一个用户DbContext设置和工作时,我最初使用powershell创建Code-First它一切正常。
我在应用程序启动时按预期实现了Database Initializer。
Database.SetInitializer(new CreateDatabaseIfNotExists());
只是为了测试它是否真的创建了数据库我实际上删除了数据库,现在我被困住了数据库将不会被创建。 我正在使用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(new MigrateDatabaseToLatestVersion());
编辑:使用新的错误消息,问题来自您已启用迁移并已运行迁移(可能是第一次创建数据库),并且由于您删除了数据库,因此迁移历史记录已丢失。 如果您没有使用自动迁移,则无法进入并自行更改数据库,并希望代码首先了解它。 尝试禁用迁移并重新启用它们以查看是否清除了迁移历史记录。
您需要调用DB作为数据的读取或插入,以便最初创建数据库。 您使用的代码只告诉EF如何在数据库尝试查找数据库时不存在该数据库。 对我来说,我使用https://www.codeproject.com/Tips/411288/Ensure-Your-Code-First-DB-is-Always-Initialized中概述的方法
上述就是C#学习教程:EntityFramework 6.0 CreateDatabaseIfNotExists代码首先创建数据库分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/997891.html