在一个使用EntityFramework6.0代码的新开发项目中,我必须先更新我的模型。使用package manager控制台中的Add-Migration
自动生成的更新脚本变得非常复杂,所以我决定重新开始。为此,我从localhost中删除了数据库,并删除了项目中的Migrations
文件夹。但是,当我重新运行Add-Migration
-命令时,我得到了以下消息,并再次生成了相同的更新脚本:
此迁移文件的设计器代码包含
当前代码第一个模型。此快照用于计算
在构建下一次迁移时对模型所做的更改。
我相当肯定这是因为__MigrationHistory
-桌子不知怎么还在那里。我再次进入数据库,但什么都没有创建,数据库仍然没有。web.config
中使用的连接字符串:
<connectionStrings>
<add name="DefaultConnection"
connectionString="Data Source=localhost;Initial Catalog=WebApp;Integrated Security=sspi;Pooling=false;"
providerName="System.Data.SqlClient" />
</connectionStrings>
然后我检查了我的进程,看到了
sqlservr.exe
-进程和localdb的两个版本。我连接到(LocalDb)\MSSQLLocalDB
并且有一个名为“defaultconnection”的新数据库,其中包含该项目的所有表。当我删除这个数据库时,我从Add-Migration
-命令得到了一个新的脚本。在这一行的某个地方,必须进行切换,因为我100%确定我在某个时间(在删除数据库时,更新脚本之前的所有表都在那里)一直在对sql server express主机进行操作,并且对于我的所有其他项目,localhost都使用Data Source=localhost
。我不明白为什么数据库名是DefaultConnection
而不是WebApp
。连接到本地主机时,数据库名为WebApp
。以前有人经历过吗?最佳答案
终于找到了答案。在包管理器控制台中,仅将Default project
设置为包含DbContext
的项目是不够的,您还需要确保您的网站设置为默认启动项目!
这个小小的变化使一切又恢复了正常。
我在任何地方都找不到这个文件,所以我希望它能帮助别人。