实体框架代码优先于LocalDb而不是本地SQL Server Express主机

Ogg*_*las 1 c# database sql-server entity-framework

在使用Entity Framework 6.0代码优先的新开发项目中,我不得不更新我的模型.Add-Migration在Package Manager Console中使用自动生成的更新脚本非常复杂,所以我决定重新开始.为此,我从localhost删除了数据库并删除Migrations了项目中的文件夹.但是当我重新运行Add-Migration-command时,我得到了以下消息,并且再次生成了相同的更新脚本:

此迁移文件的Designer代码包含当前Code First模型的快照.此快照用于在您构建下一次迁移时计算模型的更改.

我很确定这是因为__MigrationHistory-table仍然存在.我再次进入数据库,但没有创建任何数据库,数据库仍然没有.

连接字符串用于web.config:

<connectionStrings>
    <add name="DefaultConnection" 
         connectionString="Data Source=localhost;Initial Catalog=WebApp;Integrated Security=sspi;Pooling=false;" 
         providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

然后我检查了我的进程,看到了sqlservr.exe-process和LocalDb的两个版本.我连接到(LocalDb)\MSSQLLocalDB了一个名为'DefaultConnection'的新数据库,其中包含项目的所有表.当我删除这个数据库时,我从Add-Migration-command 获得了一个新的脚本.在某个地方,必须有一个交换机,因为我100%确定我曾经在SQL Server Express主机上工作过一段时间(更新脚本之前的所有表,当我删除数据库时)和我的所有表其他项目localhost使用Data Source=localhost.我无法理解为什么数据库名称DefaultConnection而不是WebApp其中之一.连接到localhost,数据库名称为WebApp.有谁之前经历过这个吗?

在此输入图像描述

Ogg*_*las 5

终于找到了答案.在包管理器控制台中,仅设置Default project包含DbContext您的项目是不够的,还需要确保将您的网站设置为默认启动项目!

这一小小的改变让一切恢复正常.

我无法在任何地方找到这个记录,所以我希望它会帮助某人.