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
Post a Comment