如何将连接字符串传递给实体框架的代码优先的 DbContext?当 DbContext 和 web.config 中的连接字符串位于相同的项目中并以相同的方式命名时,我的数据库生成工作正常。但是现在我需要将 DbContext 移动到另一个项目,因此我正在测试向它传递一个连接字符串,如下所示:
模型与背景
public class Dinner
{
public int DinnerId { get; set; }
public string Title { get; set; }
}
public class NerdDinners : DbContext
{
public NerdDinners(string connString)
: base(connString)
{
}
public DbSet<Dinner> Dinners { get; set; }
}
开拍
public ActionResult Index()
{
var db = new NerdDinners(ConfigurationManager.ConnectionStrings["NerdDinnerDb"].ConnectionString);
var dinners = (from d in db.Dinners
select d).ToList();
return View(dinners);
}
Web.Config
<connectionStrings>
<add name="NerdDinnerDb" connectionString="Data Source=|DataDirectory|NerdDinners.sdf" providerName="System.Data.SqlServerCe.4.0"/>
</connectionStrings>
如果我在操作中设置了一个断点来分析 db
,那么连接字符串就在那里,但是它不会创建或者查找数据库或者任何东西。
建立到 SQLServer 的连接时发生了与网络相关或实例特定的错误。找不到或无法访问服务器。验证实例名称是否正确,SQLServer 是否配置为允许远程连接。(提供程序: 命名管道提供程序,错误: 40-无法打开到 SQLServer 的连接)