2

我不明白为什么我会收到这个错误。我也习惯于 .NET 抛出一个我可以调试的实际错误。相反,我在输出控制台中得到以下内容:

A first chance exception of type 'System.Data.SqlClient.SqlException' occurred in System.Data.Linq.dll

我已经多次重新创建应用程序和数据库。奇怪的是,它第一次工作(它是一个不同的应用程序和不同的数据库,但过程是相同的)。

  1. 创建 4.0 窗体应用程序
  2. 通过 vs 创建一个 .mdf 数据库
  3. 在数据库上创建表
  4. 创建 linq to sql 文件并将表拖到上面。
  5. 输入linq代码并运行代码。我得到了已经提到的错误。

实际代码是:

// i changed the variable names before posting so if I spelled cats wrong thats not the problem
static public void Insert(Cat[] cats)
    {
        using (Cats.lsMapDataContext db = new lsMapDataContext(Global.db_path))
        {
            foreach (Cat cat in cats)
            {
                history history = new history();
                history.name = cats.name;
                history.breed = cats.breed;
                db.histories.InsertOnSubmit(history);
                db.SubmitChanges(); // i silently fail here because silent fails are cool and helpful
            }

        }
    }

为什么它可能会这样做有一些常见的原因吗?该数据库是在 Documents 中为我所在的用户创建的(此计算机/管理员只有一个)。据我所知,没有特殊的访问权限。

有没有办法挂钩该 dll,以便在它崩溃时对其进行调试?一个pdb什么的?

4

1 回答 1

3

通过检查.InnerException(或等) .InnerException.InnerException您应该能够看到实际错误。

你可以这样做:

  • 直接在 Visual Studio 中调试代码并检查 .InnerException;或者
  • 添加catch语句并将错误写入控制台;

    static public void Insert(Cat[] cats)
    {
     try {
        //Your code here
     } catch (Exception ex ) {
        Exception ex2 = ex;
        while( ex2.InnerException != null ) {
             ex2 = ex2.InnerException;
        }
        Console.WriteLine( ex.InnerException );
        throw;
     }
    }
    
于 2012-07-13T05:22:53.917 回答