エンティティフレームワークのコードファーストの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
と、接続文字列はそこにありますが、データベースやその他のものは作成または検索されません。
SQL Serverへの接続を確立中にネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからなかったか、アクセスできませんでした。インスタンス名が正しいこと、およびSQL Serverがリモート接続を許可するように構成されていることを確認してください。(プロバイダー:名前付きパイププロバイダー、エラー:40-SQL Serverへの接続を開けませんでした)