我正在使用实体框架5,我正在尝试在运行时创建连接字符串。
这是我的旧配置
<connectionStrings>
<!--<add name="JobEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string="data source=local;initial catalog=DB;persist security info=True;user id=sa;password=1234;MultipleActiveResultSets=True;App=JOB"" providerName="System.Data.EntityClient" />-->
</connectionStrings>
我的DBContext构造函数
public JobEntities(String connectionString)
: base(connectionString)
{
}
并调用我的数据库
String entityConnStr = @"metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=data source=local;initial catalog=DB;persist security info=True;user id=sa;password=1234;MultipleActiveResultSets=True;App=JOB";
using (var context = new Model.JobEntities(entityConnStr))
{
try
{
var d = context.TABLE.ToList();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}
执行我的代码时,抛出了一条带有消息
的异常不支持关键字:'初始目录'。
有人可以帮助我
答案 0 :(得分:0)
您的提供商连接字符串未正确引用。
String entityConnStr = @"metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=data source=local;initial catalog=DB;persist security info=True;user id=sa;password=1234;MultipleActiveResultSets=True;App=JOB";
应该是
String entityConnStr = @"metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=""data source=local;initial catalog=DB;persist security info=True;user id=sa;password=1234;MultipleActiveResultSets=True;App=JOB""";
Entity Framework的连接字符串中嵌入了基于提供程序的连接字符串。 initial catalog
属性被错误地解释为属于实体框架级别而非提供者级别。