2012-10-08 14 views
16

私のソリューションには3つのクラスプロジェクトがあります。 1. MVC4プロジェクト 2.ドメイン 3.テスト私はコード最初のエンティティフレームワークの接続文字列

<add name="EfDbContext" connectionString="Data Source=.;Initial Catalog=SportsStore;Integrated Security=true;" providerName="System.Data.SqlClient"/> 

Iとして、接続文字列でweb.configファイルを追加したMVC4プロジェクトで

DbContextを継承するDomainプロジェクトのEfDbContextという名前のクラスを持っています。

ブラウザでウェブサイトを表示すると、サーバーが見つかりませんでした。

EfDbContextクラスをデバッグし、Database.Connection.ConnectionString がデータベースを使用して\ SqlExpressにEfDbContextとして設定されていることがわかりました。

なぜですか?あなたのコンテキストクラスは、例えば、別のプロジェクト

にあるときは、あなたのコンテキストにFULL名前空間としてあなたの接続文字列を持っている必要があります

答えて

1

最後に、私はビューフォルダのVSによって作成されたweb.configファイルに接続エントリを追加したことに気付きました。

私の悪いです。

17

 
<add name="YourClassProject.EfDbContext" connectionString="Data Source=.;Initial Catalog=SportsStore;Integrated Security=true;" providerName="System.Data.SqlClient"/> 
+0

私はこのオプションを試しましたが動作しません –

+0

EF6では、複数のコンテキストに共有データベースを使用する場合、コンテキストクラスがbase( "この記事の上にリストされているあなたのコンテンツ名"これは接続文字列の名前でもあります。 –

11

をあなたの接続文字列名を使用してDbContextを作成する必要がありますコンストラクタに渡す

public class UnicornsContext : DbContext 
{ 
    public UnicornsContext() 
     : base("EfDbContext") 
    { 
    } 
} 

http://blogs.msdn.com/b/adonet/archive/2011/01/27/using-dbcontext-in-ef-feature-ctp5-part-2-connections-and-models.aspx

+0

このオプションを試しましたが、動作しません。 –

+1

これは少なくとも私にとって最高の解決策です:)ありがとう。 –

関連する問題