2013-05-06 21 views
30

MVC 4プロジェクトをセットアップし、Entity Frameworkを使用してすべてのモデルクラスを生成しました。次に、クラスを追加し、 "MyProjectEntities"クラスと同じ名前を付けて部分的にして、そのクラスにパーソナライズされたメソッドを追加できます。私はこのクラスのデータベースを照会するためのメソッドの束を追加し、それはうまく構築されます。私はUnintentionalCodeFirstExceptionを取得しますが、私はこれらのメソッドを呼び出すとき。私は何が間違っているのかよくわからないのですか?Entity Framework UnintentionalCodeFirstException

答えて

53

正しい接続文字列を入力する必要があります。通常の "データソース="タイプの文字列だけではありません。

設定ファイルに "metadata ="で始まる接続文字列があります。その接続文字列を使用します。

6

また、データベース・最初の接続文字列に簡単な接続文字列を変換することができます。

public static string BuildEntityConnectionStringFromAppSettings(string nameOfConnectionString) 
{ 
    var shortConnectionString = GetConnectionStringByName(nameOfConnectionString); 

    // Specify the provider name, server and database. 
    string providerName = "System.Data.SqlClient"; 

    // Initialize the connection string builder for the 
    // underlying provider taking the short connection string. 
    SqlConnectionStringBuilder sqlBuilder = 
     new SqlConnectionStringBuilder(shortConnectionString); 

    // Set the properties for the data source. 
    sqlBuilder.IntegratedSecurity = false; 

    // Build the SqlConnection connection string. 
    string providerString = sqlBuilder.ToString(); 

    // Initialize the EntityConnectionStringBuilder. 
    EntityConnectionStringBuilder entityBuilder = 
     new EntityConnectionStringBuilder(); 

    //Set the provider name. 
    entityBuilder.Provider = providerName; 

    // Set the provider-specific connection string. 
    entityBuilder.ProviderConnectionString = providerString; 

    // Set the Metadata location. 
    entityBuilder.Metadata = String.Format("res://*/Application.{0}.Data.Model.{0}Model.csdl|res://*/Application.{0}.Data.Model.{0}Model.ssdl|res://*/Application.{0}.Data.Model.{0}Model.msl", nameOfConnectionString); 
    return entityBuilder.ToString(); 
} 

背景:私のプロジェクトであり、多くの接続文字列であり、我々は彼らが簡単で、同等の維持したいです。