private Account GetAccountFromNumber(int pToAcctNumber)
 {
     using (BackupBankEntityModelContainer lContainer = new BackupBankEntityModelContainer())
     {
         return(lContainer.Accounts.Where((pAcct) => (pAcct.AccountNumber == pToAcctNumber)).FirstOrDefault());
     }
 }
        private static void CreateDummyEntities()
        {
            using (TransactionScope lScope = new TransactionScope())
                using (BackupBankEntityModelContainer lContainer = new BackupBankEntityModelContainer())
                {
                    if (lContainer.Accounts.Count() == 0)
                    {
                        Customer lVideoStore = new Customer();
                        Account  lVSAccount  = new Account()
                        {
                            AccountNumber = 123, Balance = 0
                        };
                        lVideoStore.Accounts.Add(lVSAccount);

                        Customer lCustomer    = new Customer();
                        Account  lCustAccount = new Account()
                        {
                            AccountNumber = 456, Balance = 20
                        };
                        lCustomer.Accounts.Add(lCustAccount);


                        lContainer.Customers.AddObject(lVideoStore);
                        lContainer.Customers.AddObject(lCustomer);


                        lContainer.SaveChanges();
                        lScope.Complete();
                    }
                }
        }
        public void Transfer(double pAmount, int pFromAcctNumber, int pToAcctNumber)
        {
            String lLogMessage;

            try
            {
                using (TransactionScope lScope = new TransactionScope())
                    using (BackupBankEntityModelContainer lContainer = new BackupBankEntityModelContainer())
                    {
                        //IOperationOutcomeService lOutcomeService = OperationOutcomeServiceFactory.GetOperationOutcomeService(pResultReturnAddress);
                        Account lFromAcct = GetAccountFromNumber(pFromAcctNumber);
                        Account lToAcct   = GetAccountFromNumber(pToAcctNumber);
                        lFromAcct.Withdraw(pAmount);
                        lToAcct.Deposit(pAmount);
                        lContainer.Attach(lFromAcct);
                        lContainer.Attach(lToAcct);
                        lContainer.ObjectStateManager.ChangeObjectState(lFromAcct, System.Data.EntityState.Modified);
                        lContainer.ObjectStateManager.ChangeObjectState(lToAcct, System.Data.EntityState.Modified);
                        lContainer.SaveChanges();



                        lLogMessage = "Transfer Request Succeeded (pAmount=" + pAmount + " , pFromAcctNumber=" + pFromAcctNumber + " , pToAcctNumber=" + pToAcctNumber + " )"; //we have to fill this within transaction scope or VS goes mad



                        lScope.Complete();


                        //lOutcomeService.NotifyOperationOutcome(new OperationOutcome() { Outcome = OperationOutcome.OperationOutcomeResult.Successful });
                    }



                SystemWideLogging.LogServiceClient.LogEvent("BackupBank :: BackupBank.Business\\BackupBank.Business.Components\\TransferProvider.cs  :: public void Transfer(double pAmount, int pFromAcctNumber, int pToAcctNumber, String pDescription)", lLogMessage);
            }
            catch (Exception lException)
            {
                SystemWideLogging.LogServiceClient.LogEvent("BackupBank :: BackupBank.Business\\BackupBank.Business.Components\\TransferProvider.cs  :: public void Transfer(double pAmount, int pFromAcctNumber, int pToAcctNumber, String pDescription)", "Transfer Request Failed (pAmount=" + pAmount + " , pFromAcctNumber=" + pFromAcctNumber + " , pToAcctNumber=" + pToAcctNumber + " )");


                Console.WriteLine("Error occured while transferring money:  " + lException.Message);
                throw;
                //lOutcomeService.NotifyOperationOutcome(new OperationOutcome() { Outcome = OperationOutcome.OperationOutcomeResult.Failure, Message = lException.Message });
            }
        }