0

Entity Frameworkに接続する必要がありますが、最初は接続文字列がわかりません(実行時にのみ)。C#のコードで動的にEntity Frameworkに接続する方法は?

ASP.NET MVCで接続文字列を使用してEntity Framworkに接続するにはどうすればいいですか。

私はこのコードサンプルが見つかりました:

public class TestEntities : DbContext 
{ 
    public TestEntities() : base(GetSqlConnection(), true) 
    { 
    } 

    public static DbConnection GetSqlConnection() 
    { 
     // Initialize the EntityConnectionStringBuilder. 
     EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(); 

     var connectionSettings = ConfigurationManager.ConnectionStrings("Current_ADO_Connection_In_Config"); 

     // Set the provider name. 
     entityBuilder.Provider = connectionSettings.ProviderName; 

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

     // Set the Metadata location. 
     entityBuilder.Metadata = "res://*/Models.TestModel.csdl|res://*/Models.TestModel.ssdl|res://*/Models.TestModel.msl"; 

     return new EntityConnection(entityBuilder.ToString()); 
    } 
} 

を私はConnectionStringsが方法ではありませんというエラーが発生します。

誰かがこれを手伝ってくれますか?

+0

ConfigurationManager.ConnectionStringsが方法ではありません、それは財産です。次のように、con文字列にアクセスできます:ConfigurationManager.ConnectionStrings ["Current_ADO_Connection_In_Config"]。ConnectionString; https://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.connectionstrings%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 – jpgrassi

+0

次のコードが見つかりました:Expo_DevEntities9 db =新しいExpo_DevEntities9(); db.Database.Connection.ConnectionString = "サーバー= localhost、1433;データベース= Expo_Dev;ユーザーID = dev;パスワード= dev1234!";私はエラーが発生します: 内部例外2: – Rachel

答えて

0

DbContextのデフォルトコンストラクタは、App.Configから接続文字列を取得しようとします。他の1つのconstructors of DbContextでは、ConnectionStringを渡すことができます。私はしばしば、私のユニットテストデータベースを参照するためにそのコンストラクタを使用します。

接続文字列を接続するために使用されているデータベース私のために非表示になりますDbContextの工場で使用されています

+0

OPは 'Metadata'を使用しているので、あなたのメソッドは動作しません。 – JohnyL

関連する問題