2009-10-07 2 views
3

많은 사람들이이 문제를 겪었으나 문제를 해결하거나 이해할 수 없다고 생각합니다. 나는 두어 시간 동안 머리카락을 찢어 버렸습니다.C#보고의 LINQ DataContext.SubmitChanges() "개체 참조가 개체의 인스턴스로 설정되지 않았습니다."

"개체 참조가 개체의 인스턴스로 설정되지 않았습니다."라는 오류가 나타납니다. 나는 result.Name 값은 내가 돈 null이 될 수 있지만 있기 때문에라고 생각

private Object CreateObject(string ObjectName, SystemClassEnum SystemClass) 
    { 
     Object result = new Object(); 
     result.Name = ObjectName; 
     result.SystemClassID = (int)SystemClass; 
     _dataContext.Objects.InsertOnSubmit(result); 
     _dataContext.SubmitChanges(); 
     return result; 
    } 

:이 방법을 실행하는 두 번째 시간에 내 datacontext.SubmitChanges()을 (내가 ObjectName의 문자열의 집합을 통해 반복 해요) 더 이상 생각하지 않아.

어떻게 든 dataContext가 닫힌 것처럼 보입니까? 디버그 모드에서는 연결 상태를 확인하고 오류 발생 후 "열기"상태입니다.

저장소 패턴과 ASP.NET MVC를 사용하고 있습니다.

결과 개체 (새 Object())는 LINQ DBML 자동 생성 클래스의 인스턴스이며, 단일 확장 메서드를 사용하여 만든 부분 클래스도 있습니다. 클래스 확장이 문제를 일으킬 수있는 방법을 모르겠습니다.

나는 생각이 없습니다.

의견이 있으십니까? 제공 할 수있는 도움에 감사드립니다 !!

안부,

에릭

답변

2

당신의 유형 Object 중 하나를 호출하지 마십시오 - 그것은 심각하게 나쁜 생각입니다; 당신은 그것을 후회할 것입니다 ... 다른 이름을 고르십시오 ... (또는 System, etc.).

오류가 실제로 위의 행 (_dataContext.Objects. 등)에없는 것은 확실합니까? 아쉽게도 _dataContext과 관련된 코드 (예 : null)를 표시하지 않으며 데이터 컨텍스트 또는 엔터티에 partial 메서드를 추가 한 경우 (예 : 표시되지 않음) 또는 어떤 이벤트가 있습니다. 나는 그 문제가 그 지역들 중 하나에있을 것으로 기대한다.

+1

아,하지만 마크와 같은 이름을 사용하면 훌륭한 코드 난독 화입니다. 그렇게 성가신 post-compilation obfuscator는 필요 없습니다. 코드 글꼴에서 눈에 띄지 않는 액센트와 점이있는 문자를 사용하면 거의 감지 할 수 없게됩니다. :) namespace System {public class objẹct {}} – KristoferA

+0

@ KristoferA- 코드를 변환하는 데 더 좋은 방법 일일 WTF에 대한 항목. @ Marc- +1 나쁜 생각이 무엇인지 강조 표시합니다! – RichardOD

+0

@RichardOD 나는 냉소적이었습니다 ... :) – KristoferA

관련 문제