Visual Studio 2012 Code First 默认仍使用 SQLEXPRESS

Posted

技术标签:

【中文标题】Visual Studio 2012 Code First 默认仍使用 SQLEXPRESS【英文标题】:Visual Studio 2012 Code First still uses SQLEXPRESS by default 【发布时间】:2013-02-17 04:01:30 【问题描述】:

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

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

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

有什么建议吗?

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

【问题讨论】:

你有没有得到这个答案?我遇到了完全相同的问题。 【参考方案1】:

看起来您必须实际指定(在上下文构造函数中)上下文应该使用 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>

【讨论】:

Tom - 这正是我一直在寻找的。我有同样的问题,每次我尝试更新数据库时,它都会在 SQLExpress 中创建它。在上下文中实现对构造函数的更改效果很好......谢谢 太棒了 - 当您不这样做时,总是使用 SqlExpress。我很难找到我该死的桌子在哪里! 另一个 +1 为另一个项目完整安装了 SQL 2012,但这解决了它尝试使用它的问题。【参考方案2】:

我能找到的只有这个:

如果安装了 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

Here.

【讨论】:

以上是关于Visual Studio 2012 Code First 默认仍使用 SQLEXPRESS的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio Code编辑器使用

转到定义并返回到 Visual Studio Code 中的引用

如何更改 Visual Studio Code 中的格式选项?

使用 Visual Studio 2012 的 Web 应用程序项目中的 App_Code 文件夹

Visual Studio 2012-2019的130多个jQuery代码片段。

kali linux 安装 Visual Studio Code