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

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


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


创建4.0 Windows窗体应用程序
通过vs创建一个.mdf数据库
在数据库上创建表
创建linq to sql文件并将表拖到它上。
输入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
            }

        }
    }


是否有一些常见的原因可能导致它这样做?该数据库是在我正在使用的用户的“文档”中创建的(此计算机/管理员仅一个)。我没有特别的访问权限。

有没有一种方法可以挂接到该dll中,以便在崩溃时进行调试? pdb之类的?

最佳答案

通过检查.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;
 }
}

10-08 03:55