편집 : 기본 프로그래밍을 모르는 경우 (예 : null 개체 참조를 참조하지 않는 경우) 문제가되지 않습니다.Entity Framework 6 쿼리로 NullReferenceException이 발생합니다.
편집 : Linqpad 내의 EF에서 스택 추적을 추가했습니다. 이 신비 중지 될 때까지
var menu = dbcontext.Tree.Where(t => t.Left > 2 && t.Right < 10).ToList();
이 잘 흥분 : EF6를 사용
, 나는 아주 간단한 쿼리가 있습니다. dbcontext.Tree
은 SQL Server 2012의 뷰입니다. Linqpad5를 사용하여 기본 제공 연결을 사용하여 예상 한 결과를 얻었습니다. 프로젝트에 EF 연결을 설정하면 NRE를 얻습니다. SQL을 확인하면 SQL 쿼리 창에 복사하여 붙여 넣을 수 있으며 적절한 결과를 얻을 수 있습니다. 나는 Where 호출없이 NRE를 얻는다.
데이터베이스에서 모델을 업데이트하여 새로 고침을 시도했습니다. 모델에서 뷰를 제거하고 업데이트하려고했습니다. 나는 모델을 완전히 삭제하고 다시 만들려고했다. Visual Studio와 내 컴퓨터를 다시 시작했습니다. 쿼리에 대해 동일한 NRE를 얻습니다. 나는 내가 뭘 시도 할 수 있는지 모르겠다. 그리고이 NRE는 나에게 전혀 이해가되지 않는다. 나는 EF를 제외한 모든 것을 사용하여 기대했던 결과를 얻는다. 나는 그것이 이전에 작동하는 것을 보지 못했다면 그것을 EF와 함께 버그까지 나눌 것이다.
이 문제를 다루는 사람이 있습니까? 이러한 특정 상황을 온라인으로 검색하면 아무런 결과도 얻지 못했습니다.
스택 추적 :
at System.Data.Entity.Core.EntityKey.AddHashValue(Int32 hashCode, Object keyValue)
at System.Data.Entity.Core.EntityKey.GetHashCode()
at System.Collections.Generic.GenericEqualityComparer`1.GetHashCode(T obj)
at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
at System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value)
at System.Data.Entity.Core.Objects.ObjectStateManager.TryGetEntityEntry(EntityKey key, EntityEntry& entry)
at System.Data.Entity.Core.Objects.ObjectStateManager.FindEntityEntry(EntityKey key)
at System.Data.Entity.Core.Common.Internal.Materialization.Shaper.HandleEntityAppendOnly[TEntity](Func`2 constructEntityDelegate, EntityKey entityKey, EntitySet entitySet)
at lambda_method(Closure , Shaper)
at System.Data.Entity.Core.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shaper shaper)
at System.Data.Entity.Core.Common.Internal.Materialization.Shaper`1.SimpleEnumerator.MoveNext()
at System.Data.Entity.Internal.LazyEnumerator`1.MoveNext()
가능한 중복으로 신고하기 전에 묻는 질문을 완전히 이해하십시오. – Pfhoenix
[Minimal, Complete, Verifiable example] (http://stackoverflow.com/help/mcve)을 포함하십시오. [좋은 질문을하는 방법] (http://stackoverflow.com/help/how-to-ask)을 읽어보십시오. 귀하의 질문은 현재 귀하의 질문에 대한 유일하고 최상의 해결책은 NRE가 무엇인지에 대한 사본이 작성 되었기 때문입니다. 당신은 스택 추적을 제공하지 않았고 실제로 무엇이 NULL인지 언급하지 않았다. (예를 들어,'dbcontext'는'null?은'dbcontext.Tree' null은 dbcontext.Tree.ToList()의 결과이거나 NRE를 던지는 것이다.), 또는 다른 세부 사항. – Igor
데이터의 모든 트리는 '왼쪽'과 '오른쪽'에 대한 값을 갖고 있습니까? – trailmax