javascript - Strange behavior when updating entity FK in LightSwitch app -


i have 3 entities: selected_spo, selected_product, selected_stock.

i need update fk in existing entity selected_stock in order link newly created entity new_spoxs. new_spoxs has mandatory fks entities selected_spo , selected_product

if call myapp.applychanges() after assignments whole update process enters in strange state. newly created entity new_spoxs saved db fk selected_stock.supplier_po_x_stocks not created.

there no error in [function onerror] of promise myapp.applychanges().then... ui keeps telling me there unsaved changes save changes button has no effect.

i tried solve in more steps. first create new entity, myapp.applychanges(), update fk link selected_stock.supplier_po_x_stocks = new_spoxs; , final myapp.applychanges(). not successful without delay.

it works if use delay can see in code ! totally not ok.

where wrong ?

or maybe bug in lightswitch ?!

var p_spo = myapp.activedataworkspace.storedata.supplier_poes_singleordefault(id_spo_selected); var p_product = myapp.activedataworkspace.storedata.products_singleordefault(id_product_selected); var p_stock = myapp.activedataworkspace.storedata.stocks_singleordefault(id_stock_selected); var promises_to_execute = [p_spo, p_product, p_stock];  var promises_executor = promises_to_execute.map(function (_p) {     return _p.execute(); });   winjs.promise.join(promises_executor).then(function (promises_result) {      var selected_spo = promises_result[0].results[0];     var selected_product = promises_result[1].results[0];     var selected_stock = promises_result[2].results[0];  //next create new supplier_po_x_stocks entity      //var new_spoxs = new myapp.supplier_po_x_stock();     var new_spoxs = myapp.activedataworkspace.storedata.supplier_po_x_stocks.addnew();     new_spoxs.product = selected_product;     new_spoxs.supplier_po = selected_spo;     new_spoxs.qty_requested = qty_to_be_ordered;     new_spoxs.qty_entered = 0;  //this not working without winjs.promise.timeout(1000) ...  !!!  not ok !!!     selected_stock.supplier_po_x_stocks = new_spoxs;      winjs.promise.timeout(1000).then(function () {         myapp.applychanges().then(             function () {                 screen.v_spo_products_to_be_ordereds.refresh();                 msls.showmessagebox('save ok');             },             function (err) {                 msls.showmessagebox(json.stringify(err, null, 4));             });     });  }, function (err) {     msls.showmessagebox(json.stringify(err, null, 4)); }); 


Comments