如何將連接字符串傳遞給實體框架的代碼優先DbContext?如果DbContext和web.config中的連接字符串位於同一個項目中並且命名方式相同,則我的數據庫生成工作正常。但現在我需要到的DbContext移動到另一個項目,所以我測試通過連接字符串,如下所示:將連接字符串傳遞給代碼優先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
,那麼連接字符串就在那裏,但它不會創建或查找數據庫或任何東西。
A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
你確定你連接到正確的服務器?該錯誤是典型的SQL Server/Express異常。聽起來不像是你連接到Sql CE數據庫......並且EF代碼首先會創建數據庫,如果它不存在的話...除非路徑找不到或許...... – 2011-01-26 14:57:15