6

我创建了一个全新的 Web API 项目,创建了一个简单的 Code First 模型(一个具有 id 和 dbcontext 对象的类,仅此而已),然后在包管理器控制台中运行 Enable-Migrations。

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

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

有小费吗?

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

4

2 回答 2

8

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

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

    }
}

否则我猜它使用 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>
于 2013-06-16T20:42:21.497 回答
3

我能找到的只有这个:

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

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

在这里

于 2013-02-26T20:46:04.343 回答