在ADO中使用实体框架连接字符串

Ste*_*ood 4 c# ado.net entity-framework connection-string

我们需要在主实体框架应用程序的一小部分中使用旧式ADO数据库连接.

我们可以在这部分代码中手动指定连接字符串,但鉴于连接字符串已经存在于App.Config中,这似乎是多余的.

但是,当我们使用配置管理器来检索连接字符串时,它会带来实体框架使用的所有元数据.

这会导致错误,因为ADO无法识别元数据关键字.

如何解析此连接字符串以删除元数据并获取普通的ADO连接字符串?

Ser*_*kiy 6

您可以DbConnectionDbContext以下位置获取实例

var context = new YourDbContext();
var connection = context.Database.Connection;
Run Code Online (Sandbox Code Playgroud)

当然,您可以从连接获取连接字符串,但您不需要这样就可以使用已有的连接对象.


这是快速监视connection对象 - 你可以看到它是带有序数连接字符串的简单ADO.NET SqlConnection对象.

在此输入图像描述

在配置文件中,我有Entity Framework连接字符串和元数据:

  <connectionStrings>
    <add name="NorthwindEntities"
         connectionString="metadata=res://*/Northwind.csdl|res://*/Northwind.ssdl|res://*/Northwind.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=Northwind;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" 
         providerName="System.Data.EntityClient" />
  </connectionStrings>
Run Code Online (Sandbox Code Playgroud)


小智 5

下面应该工作:

var efConn = new System.Data.EntityClient.EntityConnectionStringBuilder(efConnection);                     
string adoConn =  efConn.ProviderConnectionString;
Run Code Online (Sandbox Code Playgroud)