エンティティフレームワークのコードファースト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 Codeは、存在しなければデータベースを作成します。パスが見つからない場合は... –