I am trying to use Entity Framework for with MySql with dynamic connection string, i.e. connection string is determined at runtime.
I included Entity Framework and EF MySql via NuGet.
I build my Model Code First from existing database.
I extended the Model to work with a connection string and added a static method to generate the connection string:
public partial class Model1
{
public Model1(string nameOrConnectionString) : base(nameOrConnectionString) { }
public static string GetConnectionString()
{
var sqlCsBuilder = new MySqlConnectionStringBuilder();
sqlCsBuilder.Server = "myhost";
sqlCsBuilder.UserID = "myuser";
sqlCsBuilder.Password = "mypass";
sqlCsBuilder.Database = "mydb";
var connectionString = sqlCsBuilder.ToString();
var entityConnectionStringBuilder= new EntityConnectionStringBuilder();
entityConnectionStringBuilder.Provider = "MySql.Data.MySqlClient";
entityConnectionStringBuilder.ProviderConnectionString = connectionString;
entityConnectionStringBuilder.Metadata = "res://*";
var entityConnectionString = entityConnectionStringBuilder.ToString();
return entityConnectionString;
}
}
Initiating connection seems to work, or at least does not throw any errors, but it throws when trying the first read operation:
using (var db = new Model1(Model1.GetConnectionString()))
{
var items = db.mytable.Where(i => i.ID < 1000);
}
Instantiating the Model1 object works, but the .Where causes an exception:
Additional information: Argument 'xmlReader' is not valid.
A minimum of one .ssdl artifact must be supplied.
Does anyone know what's wrong?