Как использовать строку динамического соединения, используя подход Model First, но все же использовать модель данных в EDMX?
Я создал EDMX, используя EF 5 с подходом Model First, то есть я начал с пустого дизайнера и смоделировал свои сущности. Теперь я хочу иметь возможность использовать эту модель, определенную в EDMX, но предоставлять строки подключения SQL Server во время выполнения без изменения файла конфигурации.
Я знаю, как передать строку подключения в DbContext, но проблема заключается в поиске метаданных для сопоставлений в сборке.
Например, мой EDMX имеет эту строку подключения в app.config
Часть, которую мне не хватает, это"metadata=res://*/Data.DataContext.EntityFramework.MesSystem.csdl|res://*/Data.DataContext.EntityFramework.MesSystem.ssdl|res://*/Data.DataContext.EntityFramework.MesSystem.msl;"
Я хочу быть в состоянии создатьDbContext
программно передавая строку подключения SQL Server, но "добавить" часть метаданных.
Это то, что я хотел бы генерировать с помощью файла T4 ...
public partial class MesSystemEntities : DbContext
{
public MesSystemEntities()
: base("name=MesSystemEntities")
{
}
public MesSystemEntities(string sqlServerConnectionString)
: base(GetEfConnectionString(sqlServerConnectionString))
{
}
private string GetEfConnectionString(string sqlServerConnectionString)
{
// values added by T4 generation
string format = "metadata=res://*/Data.DataContext.EntityFramework.MesSystem.csdl|res://*/Data.DataContext.EntityFramework.MesSystem.ssdl|res://*/Data.DataContext.EntityFramework.MesSystem.msl;;provider=System.Data.SqlClient;provider connection string=\"{0}\"";
return String.Format(format, sqlServerConnectionString);
}
...
}
У меня вопрос, как я могу получить метаданные, которые мне нужны, в файле генерации T4, чтобы создать соединение Entity Framework без жесткого кодирования для каждого файла EDMX?
ИЛИ ЖЕ
Есть ли более простой способ загрузить метаданные из сборки программно?