如何使用EF6重新创建数据库?
我已经尝试了以下两个帖子但是,我不知道为什么它不起作用并且得到同样的错误。
我已经在网络服务器上发布了我的示例。我正在使用 Sql Server 2012 Express DBMS。
当我创建我的应用程序并将其发布到Web服务器上时,它运行正常。它已自动创建数据库。之后我在ApplicationDBContext
进行了一些更改,并在IdentityModes(ApplicationUser)
中添加了一些属性。然后我在本地IIS Express 上迁移了数据库,它运行正常。然后我试图在Web服务器上再次发布我的示例,但这次它显示错误。
Migrations is enabled for context 'ApplicationDbContext' 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.
我已经删除了Web服务器上的数据库并再次尝试。但是,我仍面临同样的错误。现在,有一个没有表的空数据库。
应用程序正在创建用户注册数据库。
我还读过这个 post 并试图调用dbContext.Database.Initialize(true);
和((IObjectContextAdapter)myContext).ObjectContext.CreateDatabase()
方法,但仍然无效。
答案 0 :(得分:3)
首先,自动迁移很适合开发,但在生产中依赖它们是一个很糟糕的想法。其次,在某些时候,您关闭了自动迁移,这就是您的生产数据库不再在其中创建表的原因。
继续关闭自动迁移;即使在开发过程中,最好通过生成迁移,查看将要执行的代码,然后运行Update-Database
来应用这些更改来确切了解您对数据库所做的更改。
在将架构更新投入生产方面,您有很多选择,但它们都归结为大致相同的过程。
Update-Database -Script
。这将生成一个SQL文件,其中包含要在数据库上运行的代码以迁移架构。如果您有自己的DBA或自己查看SQL代码,然后通过Management Studio手动将其应用到您的数据库,请将其交给您的DBA。Update-Database
。这次没有-Script
对本地数据库架构进行更改。答案 1 :(得分:2)