2016-10-12 6 views
3

これは少し失われています。実行時にエラーObject reference not set to an instance of an object.db.EntityRichContents.DeleteAllOnSubmit(q);の行に表示しています。プロジェクトはうまく構築されます。Linq "オブジェクト参照がオブジェクトのインスタンスに設定されていません。"

protected override void ControllerOnEntityDeleted(EntityObj forEntity, EntityDeletionController.DeletionAction newStatus) 
{ 
    if (newStatus == EntityDeletionController.DeletionAction.HardDelete) 
    { 
     if(forEntity == null) throw new Exception(); 

     using (var db = new DBContext()) 
     { 
      var q = db.EntityRichContents.Where(c => c.C3Entity == ForEntity.TypeID && c.C3EntityRecordID == ForEntity.ID); 
      db.EntityRichContents.DeleteAllOnSubmit(q); 
      db.SubmitChanges(); 
     } 
    } 
} 

q.Any()またはq == nullをチェックする(qがnullではない)どのような方法では役立ちません。一つはForEntityとさforEntity(メソッドパラメータ)は、第2(おそらくはクラスプロパティのプロパティ):なるほど

+0

nullとは何ですか? – Brandon

+0

@Brandonは重複していません。 'q'、' db'と 'forEntity'の両方がnullではありません –

+0

q.Any()は何を返しますか? – raven

答えて

1

は、2つの類似の変数があります。それはタイプミスですか?

どちらの方法は、方法が挙げられるを遅延私はラムダパラメータの一つ に(c => c.C3Entity == ForEntity.TypeID && c.C3EntityRecordID == ForEntity.ID)がヌルであることを前提となることを考えます。例外を避けるために、すべてのパラメータやプロパティに対してヌルチェックを追加してください。

関連する問題