-Share same connection between DbContext and ImmediateDbContext so they can join same transaction.

-UnitOfWork: made generic and use generic on shared connection.