从相关表中的另一个属性值分配属性值

时间:2012-11-29 17:42:39

标签: c# visual-studio-2010 silverlight visual-studio-lightswitch

我有一个名为PRODUCT的表格,其中存储了产品的Price。 因为我知道产品的价格可以随时改变,所以我有一个名为ORDER的表,其中包含某人正在订购的产品的Quantity,以及{{1} },这是在交易完成时应从列TodaysPrice中提取的价格。

问题是,我不知道如何提取属性的值并将此值赋给LightSwitch中的另一个属性。


到目前为止,我设法考虑将其包含在Price

Order_Created()

但是上面的代码不起作用,我得到了这个例外:

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

我不确定这是否正确,任何帮助都会非常感激。我想知道如何使用Visual Studio 2010在LightSwitch 2011中执行此操作。

提前非常感谢!

1 个答案:

答案 0 :(得分:0)

SelectedItem 产品当前没有值时,您的代码可能正在运行。在引用实体的任何属性之前,应始终检查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 *方法不是拥有此代码的正确位置,因为在创建 Order 时,您还不知道哪个产品将是选择。放置此代码的正确位置在* Product_Changed *方法中,因此当选择(或更改)产品时,产品的当前价格会被激活在订单

另外请注意,除非您为示例简化了表格,否则我认为您错过了一张桌子。 订单通常会包含关联的客户日期等内容。它还会包含 OrderLines (或类似的名称) OrderLine 应该有产品/数量/价格详细信息,而不是订单本身。