I have DatabaseContext class.public interface IDatabaseContext : IDisposable{    SqlConnection Connection { get; }}public class DatabaseContext : IDatabaseContext{    private readonly string _connectionString;    private SqlConnection _connection;    public DatabaseContext(string connectionString)    {        _connectionString = connectionString;    }    public SqlConnection Connection    {        get        {            if (_connection == null)                _connection = new SqlConnection(_connectionString);            if (_connection.State != ConnectionState.Open)                _connection.Open();            return _connection;        }    }    public void Dispose()    {        if (_connection != null && _connection.State == ConnectionState.Open)            _connection.Close();    }}And I use it in PageService class using dependency injection, for example:public class PageService    {        private readonly IDatabaseContext _databaseContext;        public PageService(IDatabaseContext databaseContext)        {            _databaseContext = databaseContext;        }        public IEnumerable<CustomPage> GetAllPages()        {            IEnumerable<CustomPage> pages;            using (var db = _databaseContext)            {                //using Dapper.Net to get list of pages.                pages = db.Connection.GetList<CustomPage>();            }            return pages;        }    }Do you see any improvement / issue of my DatabaseContext class?
Simple Data Access Layer
c#;sql server