2017-09-29 21 views
1

私は趣味としてエンティティと商品の間に多対多の関係を作成しています。
私のInvoiceProductControllerではInvoiceProductを作成しようとしていますが、何らかの理由でinvoiceProductを作成している途中で、CreateボタンをクリックしたときにProduct QtyOnHandが減少しませんでした。私は請求書と製品に関係する多対多の関係を持っています

オブジェクト参照がオブジェクトのインスタンスに設定されていないと言って、プログラムを実行したときにエラーが発生しました。

私は私のInvoiceProductsControllerで、右ここに証拠を持っている:

Product pro = db.InvoiceProducts.Find(invoiceProduct.Product).Product; 
      pro.QtyOnHand -= invoiceProduct.QtyOrd; 

私はInvoiceProductを作成した後にそれを入れた後、私はまだエラーを得ました。それでも、オブジェクトのインスタンスに設定されていないオブジェクトが読み込まれます。

+4

'db'または' invoiceProduct'のいずれかがnullであるか、 'Find()'の結果がnullです。デバッガを使用してください。 – Amy

答えて

0

これはレイジーロードによるものでしょうか?

この場合、以下のコードが有効です。

var pro = db.InvoiceProducts 
      .Include("Product") //explicitly loading Product 
      //for below: possibly x.Product.ID == invoiceProduct.Product.ID ? 
      .Where(x=>x.Product == invoiceProduct.Product) 
      .FirstOrDefault().Product; 
pro.QtyOnHand -= invoiceProduct.QtyOrd; 
+0

FirstOrDefault()にはパラメータが必要です。 –

+0

パラメータを渡すように求められていますか?私はパラメータを渡す必要はありませんでした。どのようなタイプのパラメータを求めていますか? –

+0

これはlinqのクエリです –