我创建了一个全新的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),所以这可能是干扰。
答案 0 :(得分: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>
答案 1 :(得分:3)
我能找到的就是:
如果安装了SQL Express(包含在Visual Studio 2010中),则会在本地SQL Express实例(。\ SQLEXPRESS)上创建数据库。如果未安装SQL Express,则Code First将尝试使用LocalDb((localdb)\ v11.0) - Visual Studio 2012中包含LocalDb。
注意:即使您使用的是Visual Studio 2012
,如果安装了SQL Express,它也将始终优先