0

と呼ばれるテーブルがPRODUCTあり、そこにPrice製品のが格納されています。製品の価格はいつでも変更される可能性があることを知っているので、誰かが注文している製品のORDERを保持するテーブルと、の列から抽出する必要のある価格を保持するテーブルがあります。トランザクションが行われている瞬間。QuantityTodaysPricePrice

問題は、プロパティの値を抽出して、この値をLightSwitchの別のプロパティに割り当てる方法がわからないことです。


これまでのところ、私が何とか考えたのは、これをOrder_Created():に含めることです。

this.Order.SelectedItem.Price = this.Order.SelectedItem.Product.Price;

しかし、上記のコードは機能しません。次の例外が発生します。

NullReferenceException was unhandled by user code

が正しいかどうかはわかりませんが、助けていただければ幸いです。VisualStudio2010を使用してLightSwitch2011でこれを行う方法を知りたいです。

よろしくお願いします!

4

1 に答える 1

0

SelectedItemまたはProductに現在値がない場合は、コードが実行されている可能性があります。エンティティのプロパティを参照する前に、常にnullをチェックする必要があります。

このように(各エンティティがそのエンティティのプロパティを参照する前にどのようにチェックされるかに注意してください:

if (this.Order != null) 
    && (this.Order.SelectedItem != null) 
    && (this.Order.SelectedItem.Product != null)
{
    this.Order.SelectedItem.Price = this.Order.SelectedItem.Product.Price;
}

* Order_Created *メソッドは、このコードを配置するのに適切な場所ではありません。注文が作成された時点では、どの製品が選択されるかがまだわからないためです。このコードを配置する正しい場所は*Product_Changed*メソッドであるため、製品が選択(または変更)されると、製品の現在の価格が注文に反映されます

別の注意点として、例のためにテーブルを単純化していない限り、テーブルが欠落していると思います。注文には通常、関連する顧客日付などが含まれます。また、 OrderLine(または同様の名前)のコレクションも含まれます。注文自体ではなく、製品/数量/価格の詳細が含まれるのはOrderLineです。

于 2012-11-30T08:23:46.520 に答える