我不明白为什么会收到此错误。我也习惯于.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;
}
}