2

編集:これは、基本的なプログラミング(nullオブジェクト参照を逆参照しようとするなど)を知らない場合には問題ありません。Entity Framework 6クエリによってNullReferenceExceptionが生成される

編集:Linqpad内のEFからのスタックトレースを追加しました。 EF6を使用して

は、私は非常に単純なクエリを持っている:それは不思議に停止するまで

var menu = dbcontext.Tree.Where(t => t.Left > 2 && t.Right < 10).ToList(); 

は、これはすぐに働きました。 dbcontext.TreeはSQL Server 2012のビューです。Linqpad5を使用すると、組み込みの接続を使用して期待した結果が得られます。プロジェクトへのEF接続を設定すると、NREが取得されます。 SQLをチェックして、それをコピーしてSQLクエリーウィンドウに貼り付け、適切な結果を得ることができます。私はWhereコールもなくNREを取得します。

データベースからモデルを更新して何かを更新しようとしました。私はモデルからビューを削除して更新しようとしました。私はモデルを完全に削除して再作成しようとしました。 Visual Studioとコンピュータを再起動しました。私は同じNREのクエリを取得します。私は他に何を試すことができるのか分かりません。このNREは私には全く意味がありません。もし私がそれ以前に働いていなかったら、私は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() 
+0

可能な重複としてフラグを付ける前に、質問されている質問を十分に理解してください。 – Pfhoenix

+0

[最小限で完全で検証可能な例](http://stackoverflow.com/help/mcve)を含めてください。 [良い質問をするにはどうすればいいですか](http://stackoverflow.com/help/how-to-ask)も読んでください。あなたの質問が現在書かれているので、あなたの質問のための唯一の最良の解決策はNREと重複しています。あなたはスタックトレースを提供しておらず、実際には何も言及していません(またはその点については言及していません:例は 'dbcontext'です)?' dbcontext.Tree'はnullですか?結果はdbcontext.Tree.ToList() )、または他の任意の詳細。 – Igor

+0

あなたのデータに含まれるすべてのツリーには、「左」と「右」の値がありますか? – trailmax

答えて

0

問題は、あなたのモデル(上のあなたの例ではTree)がNULL可能でない1つ以上の性質を有するということである(そしておそらくもマッピングにおけるNULL可能でないとしてマークをただし、データストア内の対応する列はNULL可能です。この例外は、これらの列の1つに対してnull値を持つレコードが取得されるとすぐにそれ自身を明示します。

  • モデルの修正 - NULL可能値のタイプについてNullable<T>または?を使用してくださいモデルを更新し、(属性経由またはEntityTypeConfigurationを継承するタイプのいずれかで)定義されたマッピングを持っている場合も、プロパティはオプションであることを指定しますそこ。
  • データストアの修正 - データストアのスキーマとデータを、モデルで想定されているものと一致するように変更することもできます。
関連する問題