public virtual IDbConnection GetDbConnection(IRequest req = null)
{
var dbFactory = Container.TryResolve<IDbConnectionFactory>();
ConnectionInfo connInfo;
if (req != null && (connInfo = req.GetItem(Keywords.DbInfo) as ConnectionInfo) != null)
{
var dbFactoryExtended = dbFactory as IDbConnectionFactoryExtended;
if (dbFactoryExtended == null)
throw new NotSupportedException("ConnectionInfo can only be used with IDbConnectionFactoryExtended");
if (connInfo.ConnectionString != null && connInfo.ProviderName != null)
return dbFactoryExtended.OpenDbConnectionString(connInfo.ConnectionString, connInfo.ProviderName);
if (connInfo.ConnectionString != null)
return dbFactoryExtended.OpenDbConnectionString(connInfo.ConnectionString);
if (connInfo.NamedConnection != null)
return dbFactoryExtended.OpenDbConnection(connInfo.NamedConnection);
}
return dbFactory.OpenDbConnection();
}