Visual Studio 2012 Code First默认情况下仍使用SQLEXPRESS

gza*_*zak 6 sql-server-express entity-framework-5 localdb visual-studio-2012

我创建了一个全新的Web API项目,创建了一个简单的Code First模型(一个类的id和的DbContext对象,这就是它),并在包管理器控制台运行启用的迁移.

我注意到它在SQLEXPRESS而不是LocalDB中创建了数据库,尽管DefaultConnection字符串指向Web.config文件中的(LocalDB).这会导致后续查询失败,声称数据库尚未初始化.

如何在VS 2012中将Enable-Migrations命令指向LocalDB而不是SQLExpress?我已经尝试安装SQL Management Studio 2012 Express并停止SQLEXPRESS数据库,但这只会导致Enable-Migration命令失败.

有小费吗?

注意:我安装了VS 2010,以及它附带的所有默认软件(如SQL Server),所以这可能是干扰.

Tom*_*ter 8

看起来你必须实际指定(在上下文构造函数中)上下文应该使用DefaultConnection.例如:

public class QueensFinalDb : DbContext
{
    public QueensFinalDb()
        : base("name=DefaultConnection")
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

否则我猜它使用machine.config中的第一个连接字符串,在我的例子中是:

<connectionStrings>
    <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)


Rob*_*obC 3

我所能找到的就是这个:

如果安装了 SQL Express(包含在 Visual Studio 2010 中),则会在本地 SQL Express 实例 (.\SQLEXPRESS) 上创建数据库。如果未安装 SQL Express,则 Code First 将尝试使用 LocalDb ((localdb)\v11.0) - LocalDb 包含在 Visual Studio 2012 中。

注意:即使您使用的是 Visual Studio 2012,如果安装了 SQL Express,它也将始终优先

这里