13

Entity Framework 4.1のコードファーストプロジェクトには有効なSQL Server 2008接続文字列が必要です。私は...今それが唯一の1つのプロジェクト、3つの単純なモデルクラス、まだ非常に簡単ですについてMVC 3エンティティフレームワーク4.1のコードの最初の文字列は、SQL Server 2008の接続文字列

で、今それを使用することになり

私は、SQL Expressの、上のCE接続のように、他のすべてを見つけることができますWeb ...

web.config( "ApplicationServices")で名前を見つけることはOKです。使用しようとすると特定のエラーが発生するためです。私は得ることができる

最高です:

指定されたメタデータ リソースを読み込むことができません。

私はmetadata=res://MyWebProject/MyWebProject.csdl| ...のようにそれを与えようとしましたが、成功しませんでした。

私のためにデータベースを作成しません - OnModelCreating(DbModelBuilder modelBuilder)メソッドにも当てはまらないです。

私がSQL Server Expressで見つけたような「旧式の」接続を使用しようとすると、メタデータが失われます。

ご協力いただきありがとうございます。

答えて

34

「コードファースト」の考え方は、接続文字列に記載されている.csdl、.ssdl、および.mslファイルを処理する必要がないということです。他の場所で指定されていない場合、DbContextは説明したようにweb.config内の接続文字列を検索します。 DbContextクラスのコンストラクタは、web.config内のconnection-stringの名前を指定する名前と値のペアを受け入れます。たとえば:

<connectionStrings> 
    <add name="ConnectionName" 
     providerName="System.Data.SqlClient" 
     connectionString="Server=ServerName;Database=DatabaseName;Integrated Security=True;" /> 
</connectionStrings> 

はあなたのコンテキストで参照することができます。

class MyContext : DbContext 
{ 
    public MyContext() : base("name=ConnectionName") { } 
    ... 
} 

私が提供したサンプルの接続文字列は、SQL Serverデータベースのため、実際にあります。 "Code-First"は対応する.ssdl-File(ストレージスキーマ)を生成する必要があるため、ProviderNameを指定することが重要です。

+0

をfolowingされ、これは私が必要なもので、ありがとうございます。 – DavidR

+0

このスレッドは人生保護者です。 –

+0

データベーススキーマが存在せず、SQL Server 2008を使用している場合、エージェントは自動的にデータベースを作成しますか? –

3

さらに、DbContextクラスの後に接続文字列の名前を付けることができます。この場合、あなたは、接続文字列

class MyContext : DbContext 
{ 
    //public MyContext() : base("name=ConnectionName") { } // not needed 
    ... 
} 

の名前を言及していないことや、接続文字列は

<connectionStrings> 
    <add name="MyContext" 
     providerName="System.Data.SqlClient" 
     connectionString="Server=ServerName;Database=DatabaseName;Integrated Security=True;" /> 
</connectionStrings> 
関連する問題