在一个使用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。以前有人经历过吗?
c# -  Entity Framework 代码优先定位LocalDb而不是本地SQL Server Express主机-LMLPHP

最佳答案

终于找到了答案。在包管理器控制台中,仅将Default project设置为包含DbContext的项目是不够的,您还需要确保您的网站设置为默认启动项目!
这个小小的变化使一切又恢复了正常。
我在任何地方都找不到这个文件,所以我希望它能帮助别人。

09-28 04:18