What is the best way to use(reuse) transactions in Entity Framework 6. Use case: If we have two methods
public decimal Withdraw(string accNum, decimal amount)
{
using (var db = new MyDbContext())
{
var query = from t in db.MoneyTransactions
where t.AccountNumber.Equals(accNum)
select t;
MoneyTransaction mt = query.First();
mt.Amount -= amount;
db.SaveChanges();
}
return amount;
}
public void Put(string accNum, decimal amount)
{
using (var db = new MyDbContext())
{
var query = from t in db.MoneyTransactions
where t.AccountNumber.Equals(accNum)
select t;
MoneyTransaction mt = query.First();
mt.Amount += amount;
db.SaveChanges();
}
}
I want to use this methods separately(e.g. just put money in an account) and also use them in a single transaction:
public void Transfer(string srcAcc, string destAcc, decimal amount)
{
Withdraw(srcAcc,amount);
Put(destAcc,amount);
}