【问题标题】:No Entity Framework provider found - calling a C# Com DLL from within VB6未找到实体框架提供程序 - 从 VB6 中调用 C# Com DLL
【发布时间】:2014-01-07 05:51:42
【问题描述】:

我想在我的 VB6 应用程序中使用的 C# Com 可见 DLL 中使用 EF6,但遇到错误。注意我没有使用 app.config ,而是从 VB6 程序传入连接字符串。

在 C# 代码中,我按如下方式访问 DBContext;

private static MyDataEntities CreateDb()
{ 
    return new MyDataEntities(EFConnectionString);
}

EFConnectionString 是

"metadata=res://*/vivModel.csdl|res://*/vivModel.ssdl|res://*/vivModel.msl;provider=System.Data.SqlClient;provider connection string='data source=MYPC\SQL2008R2;initial catalog=MyDatabase;user id=sa;password=mypassword;MultipleActiveResultSets=True;App=EntityFramework'"

错误信息是

[[指定的架构无效。错误: vivModel.ssdl(2,2):错误 0152:没有为具有不变名称“System.Data.SqlClient”的 ADO.NET 提供程序找到实体框架提供程序。确保提供程序已在应用程序配置文件的“entityFramework”部分注册。请参阅http://go.microsoft.com/fwlink/?LinkId=260882 了解更多信息。]]

【问题讨论】:

    标签: entity-framework com vb6


    【解决方案1】:

    我在使用 VS 2013 EF 6.1.1 的解决方案中遇到了同样的错误,该解决方案具有 N 层,具有两个 Web 应用程序项目和一个类库。我已经在这个类库中安装了 EF。当我在 Web 应用程序项目中安装 EF 时,我也解决了这个问题。 之后,在文件夹 bin/debug 中找到了 EntityFramework.sqlserver.dll。 我在another stackoverflow question找到了解决方案。

    【讨论】:

      【解决方案2】:

      通过将 dll 从包文件夹复制到与我的 vb 可执行文件相同的文件夹,我已经能够克服这个错误。 EntityFramework.sqlserver.dll 没有找到绑定\调试的方式

      【讨论】:

        【解决方案3】:

        必须在 Bin 文件夹中添加两个 DLL 文件 1.EntityFramework.SqlServer.dll 2.EntityFramework.dll

        注意:如果两者都添加到 dll 中,请检查您的 dll

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-12-05
          • 2015-05-21
          • 2018-02-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多