Note that there are some explanatory texts on larger screens.

plurals
  1. POEntity Framework SaveChanges function won't commit my changes
    primarykey
    data
    text
    <p>I have an initial selection which I place into list. I use the list to loop through each record and where it meets certain criteria I run trough a series of inserts, deletes and updates. Finally call the SaveChanges() method to commit changes. </p> <p>The code runs through without raising an exception but no changes reflect in the database. I have been searching the web with no luck.</p> <p>I'm using VS2008 with SQL2008 backend.</p> <p>Please help?</p> <pre><code> using (SMSEntities db = new SMSEntities()) { try { //Get SMS's to send from Inbox List&lt;Inbox&gt; tmpInbox = (from c in db.Inboxes where c.Status != "NEW" &amp;&amp; c.Status != "SUCCESS" select c).ToList();// new { Inbox.InboxID, Inbox.StatusTrackingID, Inbox.Status, Inbox.NoOfAttempts, Inbox.CellNo, Inbox.SourceCellNo, Inbox.Header, Inbox.Message, Inbox.MessageDate, Inbox.AccountID, Inbox.LastAttemptDate }).ToList(); foreach (Inbox tmpInboxIndex in tmpInbox) { bool success = false; //Check status here string SentStatus = CheckSMSSentToProvider(tmpInboxIndex.StatusTrackingID); // Define a transaction scope for the operations. using (TransactionScope transaction = new TransactionScope()) { try { if ((SentStatus == "DELIVERED") || (SentStatus == "NOTFOUND") || (SentStatus == "DELETED") || (SentStatus == "REJECTED") || (SentStatus == "UNDELIVERED")) { //Insert the Log row Log newLog = new Log(); newLog.InboxID = tmpInboxIndex.InboxID; newLog.CellNo = tmpInboxIndex.CellNo; newLog.SourceCellNo = tmpInboxIndex.SourceCellNo; newLog.Message = tmpInboxIndex.Message; newLog.Header = tmpInboxIndex.Header; newLog.MessageDate = tmpInboxIndex.MessageDate; newLog.AccountID = tmpInboxIndex.AccountID; newLog.ProcessedDate = DateTime.Now; newLog.Status = tmpInboxIndex.Status; newLog.StatusTrackingID = tmpInboxIndex.StatusTrackingID; newLog.NoOfAttempts = tmpInboxIndex.NoOfAttempts; newLog.LastAttemptDate = tmpInboxIndex.LastAttemptDate; db.Logs.AddObject(newLog); //Delete the Inbox row if (tmpInbox != null) { var deleteInbox = (from c in db.Inboxes where c.InboxID == tmpInboxIndex.InboxID select c).FirstOrDefault(); if (deleteInbox != null) { db.DeleteObject(deleteInbox); //db.SaveChanges(SaveOptions.DetectChangesBeforeSave); } } } else { //Update inbox status var tmpUpdateInbox = (from c in db.Inboxes where c.InboxID == tmpInboxIndex.InboxID select c).FirstOrDefault(); tmpUpdateInbox.Status = SentStatus; tmpUpdateInbox.NoOfAttempts = tmpInboxIndex.NoOfAttempts + 1; tmpUpdateInbox.LastAttemptDate = DateTime.Now; //db.SaveChanges(SaveOptions.DetectChangesBeforeSave); } // Mark the transaction as complete. transaction.Complete(); success = true; //break; } catch (Exception ex) { // Handle errors and deadlocks here and retry if needed. // Allow an UpdateException to pass through and // retry, otherwise stop the execution. if (ex.GetType() != typeof(UpdateException)) { Console.WriteLine("An error occured. " + "The operation cannot be retried." + ex.Message); break; } // If we get to this point, the operation will be retried. } } if (success) { // Reset the context since the operation succeeded. //db.AcceptAllChanges(); db.SaveChanges(); } } // Dispose the object context. db.Dispose(); } catch (Exception exp) { throw new Exception("ERROR - " + exp.Message.ToString(), exp); } } return true; </code></pre> <p>Regards, GPR.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload