2

このエラーが発生する理由がわかりません。また、デバッグできる実際のエラーをスローする .NET にも慣れています。代わりに、出力コンソールに次のように表示されます。

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

アプリケーションとデータベースを数回再作成しました。奇妙なことに、それは初めて機能しました (別のアプリと別のデータベースでしたが、プロセスは同じでした)。

  1. 4.0 Windows フォーム アプリを作成する
  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
            }

        }
    }

これを行っている可能性がある一般的な理由はありますか?データベースは、私が使用しているユーザーのドキュメントに作成されます (このコンピューター/管理者用に 1 つだけ)。私が知っている特別なアクセス権はありません。

クラッシュしたときにデバッグできるように、その dll にフックする方法はありますか? pdbか何か?

4

1 に答える 1

3

.InnerException(またはなどの)検査することにより.InnerException.InnerException実際のエラーを確認できるはずです。

あなたはそれを行うことができます:

  • コードをデバッグし、VisualStudioで直接.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 に答える