c# - Everytime I save entity framework is leaving old data and creating new for ICollection property of a model -


please guide me how can save , update data database without creating copy of row. whenever save it's create new record instead update current one. so, question is, there wrong in model creation or relation between model here’s models

 public class order {     public guid id { get; set; }     public string number { get; set; }      public string fromloc { get; set; }     public string toloc { get; set; }     public division devision { get; set; } = division.none;     public datetime orderdate { get; set; } = datetime.now;     public orderpriority priority { get; set; } = orderpriority.none;     public bool issubmitted { get; set; }     public otherfield others { get; set; }      public icollection<orderdetails> details { get; set; } //problem here  } public class orderdetails {     public int id { get; set; }     public string productcode { get; set; }     public int whstock { get; set; }     public int branchstock { get; set; }     public int quantity { get; set; }  } 

i using fluent api model configuration here’s config code

 public class orderconfig : entitytypeconfiguration<order> {     public orderconfig()     {         totable("tblorderhead");         haskey(k=>new { k.id,k.number});          property(p=>p.fromloc).isrequired();         property(p=>p.toloc).isrequired();           hasmany(m => m.details);     } } 

and save function

 private async void save()     {         otherfield comfield = new otherfield         {             createby = frmwelcome._user.username,             updateby = frmwelcome._user.username         };          var orderdetails = new list<orderdetails>();         task<order> taskfindorder = new task<order>(()=> {             //details             foreach (orderdetailsviewmodel item in orderdetailsviewmodelbindingsource)             {                 orderdetails details = new orderdetails                 {                     productcode = item.prodcode,                     branchstock = item.brstk,                     whstock = item.whstk,                     quantity = item.quantity                  };                 orderdetails.add(details);             }             return con.orders.firstordefaultasync(x => x.number == txtordernumber.text).result; ;         });         taskfindorder.start();         var find = await taskfindorder;          if (find != null)         {             //run update             find.details.clear();             find.details = orderdetails;             find.others.updateby = frmwelcome._user.username;             find.others.updatetimestamp = datetime.now;         }         else         {             var order = new order             {                 id = guid.newguid(),                 fromloc = frmwelcome._locationcode,                 toloc="",                 number = txtordernumber.text,                 others = comfield,                 details=orderdetails             };             con.orders.add(order);         }         try         {             var result = await con.savechangesasync();             if (result != 0)             {                 new msg("successfull", "record saved.", msg.msgtype.success);             }             else             {                 new msg("failed!", "record failed save database.", msg.msgtype.warning);             }         }         catch (exception ex)         {             new msg("error!", ex.message, msg.msgtype.error);         }      } 

and when save it's ok when it's run update

this result after save, please see result too

enter image description here

i don't know correct way or not time being resolve issue. have idea please share me did below

private async void save()     {         otherfield comfield = new otherfield         {             createby = frmwelcome._user.username,             updateby = frmwelcome._user.username         };          var orderdetails = new list<orderdetails>();         task<order> taskfindorder = new task<order>(()=> {             //details             foreach (orderdetailsviewmodel item in orderdetailsviewmodelbindingsource)             {                 orderdetails details = new orderdetails                 {                     productcode = item.prodcode,                     branchstock = item.brstk,                     whstock = item.whstk,                     quantity = item.quantity                  };                 orderdetails.add(details);             }             return con.orders.firstordefaultasync(x => x.number == txtordernumber.text).result; ;         });         taskfindorder.start();         var find = await taskfindorder;          if (find != null)         {             //run update             var del = find.details; //get previous details             con.orderdetails.removerange(del); //addedd line here delete             find.details = orderdetails; //assign new value             find.others.updateby = frmwelcome._user.username;             find.others.updatetimestamp = datetime.now;         }         else         {             var order = new order             {                 id = guid.newguid(),                 fromloc = frmwelcome._locationcode,                 toloc="",                 number = txtordernumber.text,                 others = comfield,                 details=orderdetails             };             con.orders.add(order);         }         try         {             var result = await con.savechangesasync();             if (result != 0)             {                 new msg("successfull", "record saved.", msg.msgtype.success);             }             else             {                 new msg("failed!", "record failed save database.", msg.msgtype.warning);             }         }         catch (exception ex)         {             new msg("error!", ex.message, msg.msgtype.error);         }      } 

it's working still not satisfied approach there's must automate approach entity framework


Comments

Popular posts from this blog

Sort a complex associative array in PHP -

vb.net - How to ignore if a cell is empty nothing -

recursion - Can every recursive algorithm be improved with dynamic programming? -