EntityConnectionFactory
を使用する必要があります
必要なものは次のとおりです。
public string CreateConnectionString(string BasicConnectionString)
{
//EntityConnectionFactory
var entityConnectionStringBuilder= new EntityConnectionStringBuilder();
entityConnectionStringBuilder.Provider = "Your Provicer here" //For me it is "System.Data.SqlClient";
entityConnectionStringBuilder.ProviderConnectionString = BasicConnectionString;
entityConnectionStringBuilder.Metadata = "res://*";
return entityConnectionStringBuilder.ToString();
}
これが使用例です
MyContext ctx = new MyContext(CreateConnectionString())
::更新::
DBファースト方式を使用しているため、次の画像を参照してください
これらの2つのラジオボタンが使用可能になったら、最初のボタンを選択します。その後、モデルの接続文字列を設定できるようになります。
これが私のコンテキストの様子です(オブジェクトコンテキストですが、この質問のコンテキストでは関係ありません)
public partial class DataContext : ObjectContext
{
#region Constructors
/// <summary>
/// Initializes a new DataContext object using the connection string found in the 'DataContext' section of the application configuration file.
/// </summary>
public DataContext() : base("name=DataContext", "DataContext")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
/// <summary>
/// Initialize a new DataContext object.
/// </summary>
public DataContext(string connectionString) : base(connectionString, "DataContext")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
/// <summary>
/// Initialize a new DataContext object.
/// </summary>
public DataContext(EntityConnection connection) : base(connection, "DataContext")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
#endregion
#region Partial Methods
partial void OnContextCreated();
#endregion
...
}
更新
自動生成されたエンティティクラスの外部の部分クラスに、探しているコンストラクターを追加します。
public partial class WMSChennaiDEVEntities : DbContext
{
public WMSChennaiDEVEntities(string connectionstring)
: base(connectionstring)
{
}
}
このコンストラクターはEF5/6に含まれていないため、エンティティ接続文字列が必要なときに誤ってSQL接続文字列を渡すことを防ぐことができます。