2012-07-13 2 views
1

왜이 오류가 발생하는지 이해할 수 없습니다. 또한 .NET에서 디버깅 할 수있는 실제 오류를 던지는 데 익숙합니다. 대신 출력 콘솔에 다음 내용이 표시됩니다.Linq 실패 - 'System.Data.SqlClient.SqlException'형식의 첫 번째 예외가 System.Data.Linq.dll에서 발생했습니다.

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

응용 프로그램과 데이터베이스를 여러 번 다시 만들었습니다. 이상하게도 처음에는 효과가 있었지만 (다른 앱과 다른 db이지만 프로세스는 동일했습니다).

  1. 가 SQL 파일에 LINQ를 만들 DB
  2. 에 테이블을 생성 대를 통해의 .mdf 데이터베이스를 만들 4.0 창문 형태의 응용 프로그램
  3. 을 만들고 그 위에 테이블을 끕니다.
  4. 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 같은데?

+1

당신은 내부 예외 볼 수 있습니까? –

+0

내부 예외가 무엇인지 알지 못 했으므로 나쁜 줄을 따라 잡으려고했습니다. 문제를 해결할 충분한 정보를 제공해야합니다. "C : \\ ... my_db.mdf 파일에 대해 자동 이름이 지정된 데이터베이스를 연결하려고 시도하지 못했습니다. 같은 이름의 데이터베이스가 있거나 지정된 파일을 열 수 없거나 UNC 공유에 있습니다 . " - thx man – user1472219

+0

데이터베이스에 연결이 잠겨있는 것처럼 들리지만 다른 응용 프로그램에서 사용중인 데이터베이스 파일을 가지고 있습니까? Visual Studio에서 데이터베이스를 편집하고 있습니까? –

답변

3

.InnerException (또는 .InnerException 등)을 검사하면 실제 오류를 볼 수 있습니다.

  • 디버그 코드 및 Visual Studio에서 직접 .InnerException을 검사;

    당신은 그것을 할 수 있습니다 또는

  • catch 문을 추가하고 콘솔에 오류를 기록하십시오. 이 null가 아니고, 내부 예외 오류 메시지가이 게시물을 업데이트 할 경우

    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; 
    } 
    } 
    
+0

이것은 나의 일을했다. 감사. – Nitin

관련 문제