Lightswitch实现在一个表被修改后修改另一个表

最近学校有课在教学Lightswith,他是微软出品的基于数据驱动和SilverLight的快速开发框架,虽然功能强大,界面美观而且操作方便,但是感觉局限性还是很多。

其中我们项目的食品出库单详情表

QQ截图20151218152732

这个表将记录某种food出库的数量,而我们的库存表如下

QQ截图20151218152953

那么我们的需求就是在out_detail这个表之后,要让Lightswitch对storage表中的对应food_id的库存记录进行数量的修改。

下面是解决方法

首先我们要在out_detail里面编写inserted的触发器,具体方法是打开out_detail表,然后点击编写代码,找到out_detail_inserted并单击。

QQ截图2015121815295

然后跳转到代码发现out_detail_inserted被创建,这个方法将在out_detail被添加项目后触发。

然后我们在当前项目中创建一个storageRecord类用来保存从出库的记录(从哪个库出的,该食物出多少)

然后我们在刚才触发器的类中创建下面的属性,用来保存所有出库记录

然后我们还在这个类中编写进行食物出库检查和记录出库数量的方法

如果我们当前food_id对应的库存足够该次出库,上面方法返回出库的记录,否则返回null

然后我们回到inserted,编写调用checkStorage的方法

这里面我们将在checkStorage方法中获取的记录放在这个类的属性中,是为了在后面的Executed方法中调用。因为在inserted中不允许我们创建额外的数据库工作空间。

然后回到out_detail表的主界面,创建SaveChanges_Executed方法,该方法将在该数据集的操作完成后调用

QQ截图20151218154342

创建完成后,我们编写代码

这里调用了 this.Application.CreateDataWorkspace() 来创建一个新的数据库工作空间,来执行我们对storage表的update操作。至此该功能完成