私のソリューションには3つのクラスプロジェクトがあります。 1. MVC4プロジェクト2.ドメイン3.テスト
MVC4プロジェクトで、接続文字列を含むweb.configファイルを追加しました。
<add name="EfDbContext" connectionString="Data Source=.;Initial Catalog=SportsStore;Integrated Security=true;" providerName="System.Data.SqlClient"/>
DbContextを継承するドメインプロジェクトにEfDbContextという名前のクラスがあります。
ブラウザでウェブサイトを表示すると、サーバーが見つかりませんというエラーが表示されます。
EfDbContextクラスをデバッグしたところ、データベースがEfDbContextであるDatabase.Connection.ConnectionStringが\ SqlExpressに設定されていることがわかりました。
何故ですか?
最後に、VSによって作成されたweb.configファイルのViewsフォルダーに接続エントリを追加したことに気付きました。
私の悪い。
コンテキストクラスが別のプロジェクトにある場合、コンテキストへのフル名前空間として接続文字列が必要です
例えば:
<add name = "YourClassProject.EfDbContext" connectionString = "Data Source = .; Initial Catalog = SportsStore; Integrated Security = true;" providerName = "System.Data.SqlClient" />
コンストラクタに渡す接続文字列名でDbContextを作成する必要があります
public class UnicornsContext : DbContext
{
public UnicornsContext()
: base("EfDbContext")
{
}
}