运行时实体框架的连接字符串

时间:2014-07-03 10:57:12

标签: c# entity-framework-5

我正在使用实体框架5,我正在尝试在运行时创建连接字符串。

这是我的旧配置

<connectionStrings>
  <!--<add name="JobEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=local;initial catalog=DB;persist security info=True;user id=sa;password=1234;MultipleActiveResultSets=True;App=JOB&quot;" 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);
      }
}

执行我的代码时,抛出了一条带有消息

的异常
  不支持

关键字:'初始目录'。

有人可以帮助我

1 个答案:

答案 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属性被错误地解释为属于实体框架级别而非提供者级别。