/// <summary> /// Build a DB2 iSeries data provider. The name will be infered from options and will be one of the constants in the DB2iSeriesProviderName class /// </summary> /// <param name="providerType">Undelying Ado.Net provider type</param> /// <param name="version">iSeries version</param> /// <param name="mappingOptions">Mapping specific options</param> public DB2iSeriesDataProvider( DB2iSeriesProviderType providerType = DB2iSeriesProviderOptions.Defaults.ProviderType, DB2iSeriesVersion version = DB2iSeriesProviderOptions.Defaults.Version, DB2iSeriesMappingOptions mappingOptions = null) : this(DB2iSeriesProviderName.GetProviderName(version, providerType, mappingOptions ?? DB2iSeriesMappingOptions.Default)) { }
public static DB2iSeriesDataProvider GetDataProvider( DB2iSeriesVersion version, DB2iSeriesProviderType providerType, DB2iSeriesMappingOptions mappingOptions) { return(GetDataProvider(DB2iSeriesProviderName.GetProviderName(version, providerType, mappingOptions))); }
public static DataConnection CreateDataConnection( string connectionString, DB2iSeriesVersion version, DB2iSeriesProviderType providerType, bool mapGuidAsString) { return(new DataConnection(GetDataProvider(version, providerType, new DB2iSeriesMappingOptions(mapGuidAsString)), connectionString)); }
public DB2iSeriesProviderOptions(string providerName, DB2iSeriesProviderType providerType, DB2iSeriesVersion version) : this(providerName, providerType) { SupportsOffsetClause = version > DB2iSeriesVersion.V7_2; SupportsTruncateTable = version > DB2iSeriesVersion.V7_1 && !providerType.IsOdbc(); SupportsMergeStatement = version >= DB2iSeriesVersion.V7_1; SupportsNCharTypes = version >= DB2iSeriesVersion.V7_1; }
private DB2iSeriesVersion GetServerMinLevel(string connectionString, DB2iSeriesProviderType providerType) { var version = GetServerVersion(connectionString, providerType); return(version switch { var x when x >= new ServerVersion(7, 2, 9) => DB2iSeriesVersion.V7_3, var x when x >= new ServerVersion(7, 2, 0) => DB2iSeriesVersion.V7_2, _ => DB2iSeriesVersion.V7_1 });
public DB2iSeriesSqlProviderFlags( DB2iSeriesVersion version, DB2iSeriesProviderType providerType) : this( supportsOffsetClause : version >= DB2iSeriesVersion.V7_3, supportsTruncateTable : version >= DB2iSeriesVersion.V7_2, supportsNamedParameters : providerType.IsIBM() ) { }
/// <summary> /// Build a DB2 iSeries data provider. /// </summary> /// <param name="name">Configuration name</param> /// <param name="providerType">Undelying Ado.Net provider type</param> /// <param name="version">iSeries version</param> /// <param name="mappingOptions">Mapping specific options</param> public DB2iSeriesDataProvider( string name, DB2iSeriesProviderType providerType = DB2iSeriesProviderOptions.Defaults.ProviderType, DB2iSeriesVersion version = DB2iSeriesProviderOptions.Defaults.Version, DB2iSeriesMappingOptions mappingOptions = null) : this(new DB2iSeriesProviderOptions(name, providerType, version) { MapGuidAsString = mappingOptions?.MapGuidAsString ?? DB2iSeriesProviderOptions.Defaults.MapGuidAsString }) { }
public DB2iSeriesSqlProviderFlags( DB2iSeriesVersion version, DB2iSeriesProviderType providerType) : this( supportsOffsetClause : version >= DB2iSeriesVersion.V7_3, supportsTruncateTable : version >= DB2iSeriesVersion.V7_2 && !providerType.IsOdbc(), supportsNamedParameters : providerType.IsIBM(), supportsMergeStatement : version >= DB2iSeriesVersion.V7_1, supportsNCharTypes : version >= DB2iSeriesVersion.V7_1 ) { }
/// <summary> /// Build a DB2 iSeries data provider. /// </summary> /// <param name="providerOptions">The provider's construction options, see <see cref="DB2iSeriesProviderOptions"/></param> public DB2iSeriesDataProvider(DB2iSeriesProviderOptions providerOptions) : base( providerOptions.ProviderName, GetMappingSchema( providerOptions.ProviderName, providerOptions.ProviderType, providerOptions.MapGuidAsString), DB2iSeriesProviderAdapter.GetInstance(providerOptions.ProviderType)) { this.db2iSeriesSqlProviderFlags = new DB2iSeriesSqlProviderFlags(providerOptions); this.mappingOptions = new DB2iSeriesMappingOptions(providerOptions); this.ProviderType = providerOptions.ProviderType; DB2iSeriesLoadExpressions.SetupExpressions(providerOptions.ProviderName, mappingOptions.MapGuidAsString); SqlProviderFlags.AcceptsTakeAsParameter = false; SqlProviderFlags.AcceptsTakeAsParameterIfSkip = true; SqlProviderFlags.IsDistinctOrderBySupported = false; SqlProviderFlags.CanCombineParameters = false; SqlProviderFlags.IsCommonTableExpressionsSupported = true; SqlProviderFlags.IsUpdateFromSupported = false; db2iSeriesSqlProviderFlags.SetCustomFlags(SqlProviderFlags); mappingOptions.SetCustomFlags(SqlProviderFlags); SetCharField(Constants.DbTypes.Char, (r, i) => r.GetString(i).TrimEnd(' ')); SetCharField(Constants.DbTypes.NChar, (r, i) => r.GetString(i).TrimEnd(' ')); SetCharField(Constants.DbTypes.Graphic, (r, i) => r.GetString(i).TrimEnd(' ')); sqlOptimizer = new DB2iSeriesSqlOptimizer(SqlProviderFlags, db2iSeriesSqlProviderFlags); schemaProvider = new DB2iSeriesSchemaProvider(this); bulkCopy = new DB2iSeriesBulkCopy(this); if (ProviderType.IsOdbc()) { SetupOdbc(); } else if (ProviderType.IsOleDb()) { SetupOleDb(); } #if NETFRAMEWORK else if (ProviderType.IsAccessClient()) { SetupAccessClient(); } #endif else if (ProviderType.IsDB2()) { SetupDB2Connect(); } }
public DB2iSeriesProviderAdapter(DB2iSeriesProviderType providerType) { adapter = providerType switch { #if NETFRAMEWORK DB2iSeriesProviderType.AccessClient => DB2iSeriesAccessClientProviderAdapter.GetInstance(), #endif DB2iSeriesProviderType.Odbc => OdbcProviderAdapter.GetInstance(), DB2iSeriesProviderType.OleDb => OleDbProviderAdapter.GetInstance(), DB2iSeriesProviderType.DB2 => DB2.DB2ProviderAdapter.GetInstance(), _ => throw ExceptionHelper.InvalidAdoProvider(providerType) }; this.ProviderType = providerType; }
private ServerVersion GetServerVersion(string connectionString, DB2iSeriesProviderType providerType) { using (var conn = (DbConnection)DB2iSeriesTools.GetDataProvider(DB2iSeriesVersion.V7_1, providerType, DB2iSeriesMappingOptions.Default).CreateConnection(connectionString)) { conn.Open(); var serverVersionParts = conn.ServerVersion.Substring(0, 5).Split('.'); var major = int.Parse(serverVersionParts.First()); var minor = int.Parse(serverVersionParts.Last()); var patchLevel = GetMaxPatchLevel(conn, major, minor); return(new ServerVersion(major, minor, patchLevel)); } }
private static MappingSchema GetMappingSchema(string configuration, DB2iSeriesProviderType providerType, bool mapGuidAsString) { var providerSchema = providerType switch { #if NETFRAMEWORK DB2iSeriesProviderType.AccessClient => DB2iSeriesAccessClientProviderAdapter.GetInstance().MappingSchema, #endif DB2iSeriesProviderType.DB2 => DB2.DB2ProviderAdapter.GetInstance().MappingSchema, _ => new MappingSchema() }; return(mapGuidAsString ? (MappingSchema) new DB2iSeriesGuidAsStringMappingSchema(configuration, providerSchema) : new DB2iSeriesMappingSchema(configuration, providerSchema)); }
public static string GetProviderName( DB2iSeriesVersion version, DB2iSeriesProviderType providerType, DB2iSeriesMappingOptions mappingOptions) { var mapGuidAsString = mappingOptions.MapGuidAsString; return(providerType switch { #if NETFRAMEWORK DB2iSeriesProviderType.AccessClient => version switch { DB2iSeriesVersion.V7_1 => mapGuidAsString ? DB2_AccessClient_71_GAS : DB2_AccessClient_71, DB2iSeriesVersion.V7_2 => mapGuidAsString ? DB2_AccessClient_72_GAS : DB2_AccessClient_72, _ => mapGuidAsString ? DB2_AccessClient_73_GAS : DB2_AccessClient_73, },
public static bool IsDB2(this DB2iSeriesProviderType providerType) => providerType == DB2iSeriesProviderType.DB2;
public static bool IsAccessClient(this DB2iSeriesProviderType providerType) => #if NETFRAMEWORK providerType == DB2iSeriesProviderType.AccessClient;
public static bool IsIBM(this DB2iSeriesProviderType providerType) => providerType == DB2iSeriesProviderType.DB2 #if NETFRAMEWORK || providerType == DB2iSeriesProviderType.AccessClient #endif ;
public DB2iSeriesProviderOptions(string providerName, DB2iSeriesProviderType providerType, DB2iSeriesVersion version) : this(providerName, providerType) { SupportsOffsetClause = version > DB2iSeriesVersion.V7_2; SupportsTruncateTable = version > DB2iSeriesVersion.V7_1; }
public DB2iSeriesProviderOptions(string providerName, DB2iSeriesProviderType providerType) { ProviderType = providerType; ProviderName = providerName; }
public static LinqToDBException InvalidAdoProvider(DB2iSeriesProviderType providerType) => new LinqToDBException($"Invalid ADO.net provider type {providerType} for iSeries DataProvider.");
public DB2iSeriesDataProviderV5R4(DB2iSeriesProviderType providerType) : base($"DB2.iSeries.{providerType}.54", providerType, version: DB2iSeriesVersionRelease.V7_1) { sqlOptimizer = new DB2iSeriesSqlOptimizerV5R4(SqlProviderFlags); }