2010-05-31 6 views
0

SQL Server에서 데이터베이스를 사용하는 .NET 프로젝트를 작성했습니다. 나는 Linq-to-SQL을 사용하고 있는데, 때로는 프로젝트가 프로젝트의 일부에서 예외 (Constraint)를 던져서이 같은 오류가 데이터베이스의 다른 일을 할 때 프로젝트의 다른 부분에 계속 표시됩니다. 삽입을 할 때와 마찬가지로 삭제 전에 예외가 발생하면 삭제 예외가 발생하고 닫고 프로젝트를 다시 열 때까지이 방법으로 유지됩니다. 내 주요 문제는 내 온라인 프로젝트에서 이런 일이 발생하면 내 프로젝트의이 오류로 인해 필자가 온라인에서 테스트하고있는 프로젝트에서 문제가 발생한다 (나는 같은 데이터베이스를 사용한다). 이 예외가 메모리 또는 뭔가에 있지만 나는 두통을 많이 일으키는 지 모르겠다. 내가 잘못SQL Server가 예외를 계속 throw하는 이유는 무엇입니까?

var actividad = (from ta in modeloDatos.tActividad 
         where ta.id_actividad == idActividad 
         select ta).Single() 
    modeloDatos.tActividad.DeleteOnSubmit(actividad); 
     modeloDatos.SubmitChanges(); 
     return true; 
    } 
    catch (Exception ex) 
    { 
     return false; 

    } 

    ex = {"The DELETE statement conflicted with the REFERENCE constraint \"FK_tActividadRiesgo_tActividad\". The conflict occurred in database \"DBDESARROLLO\", table \"dbo.tActividadRiesgo\".\r\nThe statement has been terminated."} 

을 (캐스케이드 삭제하고 있지) 삭제 할 수 있으며이 코드에서 (삽입)을 갈 때

proceso.id_encabezado = encabezadoProceso.id_encabezado; 
     proceso.id_procesopadre = idProcesoPadre; 
     modeloDatos.tProceso.InsertOnSubmit(proceso); 
     modeloDatos.SubmitChanges(); 
catch (Exception ex) 
    { 
     return -1; 

    } 

나를 던져 때

이 예외 그게 전부입니다 나를 던져 내가하는 일과 아무런 관련이없는 똑같은 예외

ex = {"The DELETE statement conflicted with the REFERENCE constraint \"FK_tActividadRiesgo_tActividad\". The conflict occurred in database \"DBDESARROLLO\", table \"dbo.tActividadRiesgo\".\r\nThe statement has been terminated."} 

나는 실제로 difer를 사용하고있다. 엔트 테이블.

+3

생성 된 주변 코드 및 예외 - 그렇지 않으면 우리는 그냥 마법 8 공을보고 추측을해야합니다. – nos

+0

magic 8 ball은 ODBC 연결에 오류가 있다고 생각합니까? – VoodooChild

+0

@VoodooChild : 물론입니다! - http://web.ics.purdue.edu/~ssanty/cgi-bin/eightball.cgi –

답변

2

예외가 있더라도 동일한 DataContext를 계속 사용하고 있으므로 동일한 보류중인 변경 사항 (업데이트/삽입/삭제)이 있으므로 변경 사항을 다시 제출하려고 할 때 동일한 보류중인 변경 사항 같은 예외가 다시 throw됩니다.

이 경우 처리하기위한 몇 가지 옵션이 있지만 가장 단순한 것은 '깨진'datacontext를 버리고 (멋지게 처리) 새 것을 작성하는 것입니다. 이후 예외 경로를 이렇게, 난 차라리 더 빨리 실행할 수있는 더 복잡한 뭔가 오히려이 같은 간단한 일을 할 줄 :)

+0

네, 저도 같은 DataContext를 사용하고 있습니다. 감사합니다 !! –

0

세션 변수를 사용하여 오류를 표시 할 수 있지만 새 페이지마다이를 지우지는 않는 것처럼 들릴 수 있습니다.

관련 문제