public DbProviderFactory GetProviderFactory(DbConnection connection) { Check.NotNull(connection, "connection"); #if NET40 var connectionType = connection.GetType(); return _cache.GetOrAdd( connectionType, t => { var row = _finder.FindRow(t, r => ExactMatch(r, t)) ?? _finder.FindRow(null, r => ExactMatch(r, t)) ?? _finder.FindRow(t, r => AssignableMatch(r, t)) ?? _finder.FindRow(null, r => AssignableMatch(r, t)); if (row == null) { throw new NotSupportedException(Strings.ProviderNotFound(connection.ToString())); } return DbProviderFactories.GetFactory(row); }); #else return DbProviderFactories.GetFactory(connection); #endif }
public DbProviderFactory GetProviderFactory(DbConnection connection, IEnumerable<DataRow> dataRows) { DebugCheck.NotNull(connection); DebugCheck.NotNull(dataRows); var connectionType = connection.GetType(); return _cache.GetOrAdd( connectionType, t => { var row = _finder.FindRow(t, r => ExactMatch(r, t), dataRows) ?? _finder.FindRow(null, r => ExactMatch(r, t), dataRows) ?? _finder.FindRow(t, r => AssignableMatch(r, t), dataRows) ?? _finder.FindRow(null, r => AssignableMatch(r, t), dataRows); if (row == null) { throw new NotSupportedException(Strings.ProviderNotFound(connection.ToString())); } return DbProviderFactories.GetFactory(row); }); }