我一直在使用EF 5模型优先的方法创建了一个EDMX,即我开始与一个空白的设计和建模我的实体。 现在,我希望能够用这个模型在EDMX定义,但不modyfing配置文件提供运行SQL Server的连接字符串。
我知道如何连接字符串传递到的DbContext,但问题是定位在装配中映射元数据。
例如,我的EDMX具有在App.config这个连接字符串
<add name="MesSystemEntities" connectionString="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="data source=MyMachine;initial catalog=MesSystem;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
,我缺少的部分是"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代文件,而不硬编码为每个EDMX文件来创建实体框架连接的元数据
要么
有没有加载从程序的组件中的元数据更简单的方法?