类型' System.Data.Common.DbTransaction'在未引用的程序集中定义。您必须添加对程序集的引用

时间:2014-05-15 11:12:06

标签: c# windows-mobile firebird2.5

欢迎。我正在尝试在Windows Mobile 6上编写一个连接到Firebird 2.5.2数据库的应用程序(使用visual studio 2008和Forms)。我写了这段代码:

  static public void Execute(FbTransaction tr, string sql, bool commit)
    {
        FbConnection cn = null;
        FbCommand cmd = null;

        if (tr != null)
        {
            cmd = new FbCommand(sql, tr.Connection, tr);
        }
        else
        {
            cn = new FbConnection(ConnString());
            cmd = new FbCommand(sql, cn);
        }

        if (cmd.Connection.State == ConnectionState.Closed)
        {
            cmd.Connection.Open();
        }

        cmd.ExecuteNonQuery();

        cmd.Dispose();

        if (cn != null)
        {
            cn.Close();
            cn.Dispose();
        }
    }

我在第1道(执行突出显示)

中收到错误
  

错误1类型' System.Data.Common.DbTransaction'定义在一个   未引用的程序集。您必须添加对程序集的引用   ' System.Data,Version = 2.0.0.0,Culture = neutral,   公钥= b77a5c561934e089'

我已将System.Data版本2.0.0.0添加到我的参考资料中。非常感谢任何帮助。


我找到了解决方案。对于那些将来会遇到类似问题的人来说,我就是这样做的: 为了让它在VS 2008(.net 3.5)和firebird 2.5.2(最新版本)中使用64位窗体,首先需要做的是下载Firebird EMBEDED win x 64 package http://www.firebirdsql.org/en/firebird-2-5-2-upd1/

接下来,转到.NET提供程序的源代码版本,我为此工作了(如果您在VS2010或更高版本的代码尝试更新的版本) http://sourceforge.net/projects/firebird/files/firebird-net-provider/2.5.2/

打开它,然后在Configuration Manager中在x64下编译它。 (记得为特定的.net版本添加System.Data的引用,我想我使用的是2.0.0.0)

现在,创建您想要的winform项目,并包含您在步骤1中下载的嵌入式Firebird包中的所有.dll(将现有项添加到项目的根目录中)

添加对新编译的FirebirdSql.dll的引用,我在我的 \ NETProvider-2.5.2-SRC \ NETProvider \源\ FirebirdSql \数据\ BIN \ 64 \调试\ FirebirdSql.Data.FirebirdClient.dll

享受吧。奖金 - >

本地Firebird服务器的字符串路径很棘手,所以这里有用的东西

     string Firebird_path = "User=SYSDBA;Password=masterkey;" +
           "Database=localhost:L:\\DBS\\DBS.FDB; " +
           "DataSource=localhost;Charset=NONE;";

2 个答案:

答案 0 :(得分:1)

您是否在项目中引用了Firebird .NET Provider?

你可以找到它here。它也可以作为NuGet包添加。

答案 1 :(得分:0)

FbTransaction实现DbTranaction接口。这意味着如果在代码中使用FbTransaction,那么在运行时也需要加载此接口,因此您需要引用程序集。