1

在 ASP.NET MVC 项目(使用 Entity Framework 4.1 代码优先方法)中,我添加了对 C:\Program Files\FirebirdClient\FirebirdSql.Data.FirebirdClient.dll 的引用。

Web.config 中的配置如下所示:

<system.data>
    <DbProviderFactories>
      <remove invariant="FirebirdSql.Data.FirebirdClient"/>
      <add
          name="Firebird Data Provider"
          invariant="FirebirdSql.Data.FirebirdClient" description="Firebird"
          type="FirebirdSql.Data.FirebirdClient.FirebirdClientFactory, FirebirdSql.Data.FirebirdClient, Version=2.6.5.0, Culture=neutral, PublicKeyToken=3750abcc3150b00c"          
      />
    </DbProviderFactories>
  </system.data>

连接字符串如下所示(数据库不存在,应从实体框架生成):

<add name="AdvertiserDatabase"
      connectionString="ServerType=1;User=SYSDBA;Password=masterkey;Dialect=3;Database=|DataDirectory|AdvertiserDb.fdb"
      providerName="FirebirdSql.Data.FirebirdClient"/>

将所有需要的文件(firebird.msg、icu*30.dll)添加到bin文件夹,还添加了文件夹 intl 和 udf。

将 fbembed.dll 重命名为 fbclient.dll。

在运行时我收到以下错误:无法加载 DLL 'fbembed':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)

出了什么问题?这应该工作!

提前致谢

编辑 在输出窗口中,我注意到以下消息(这让我很困惑):

WebDev.WebServer40.EXE' (Managed (v4.0.30319)): Loaded 'FB_965910463.dll'
A first chance exception of type 'System.DllNotFoundException' occurred in FB_965910463.dll
A first chance exception of type 'System.DllNotFoundException' occurred in FirebirdSql.Data.FirebirdClient.dll
A first chance exception of type 'System.Data.ProviderIncompatibleException' occurred in System.Data.Entity.dll
A first chance exception of type 'System.Data.ProviderIncompatibleException' occurred in EntityFramework.dll
A first chance exception of type 'System.Data.ProviderIncompatibleException' occurred in System.Web.Mvc.dll
A first chance exception of type 'System.Data.ProviderIncompatibleException' occurred in System.Web.Mvc.dll
A first chance exception of type 'System.NotSupportedException' occurred in mscorlib.dll
A first chance exception of type 'System.NotSupportedException' occurred in mscorlib.dll
4

2 回答 2

1

您不应将 fbembed.dll 重命名为 fbclient.dll。但是您也可以在连接字符串中使用 ClientLibrary(检查 FbConnectionStringBuilder 类)参数来指定名称(和路径)。

于 2012-01-04T16:04:23.257 回答
0

使用“ClientLibrary”在连接字符串中定义 fbembed.dll 的路径

样本:

<add name="myconn" connectionString="User=SYSDBA;Password=masterkey;Dialect=3;Database=|DataDirectory|mydatafile.fdb;ServerType=1;ClientLibrary=AbsolutePathToDll\fbembed.dll" />
于 2015-09-11T09:24:12.900 回答