protected InformixDataProvider(string name, MappingSchema mappingSchema) : base(name, mappingSchema) { SqlProviderFlags.IsParameterOrderDependent = true; SqlProviderFlags.IsSubQueryTakeSupported = false; SqlProviderFlags.IsInsertOrUpdateSupported = false; SqlProviderFlags.IsGroupByExpressionSupported = false; SqlProviderFlags.IsCrossJoinSupported = false; SetCharField("CHAR", (r, i) => r.GetString(i).TrimEnd(' ')); SetCharField("NCHAR", (r, i) => r.GetString(i).TrimEnd(' ')); SetCharFieldToType <char>("CHAR", (r, i) => DataTools.GetChar(r, i)); SetCharFieldToType <char>("NCHAR", (r, i) => DataTools.GetChar(r, i)); if (!Configuration.AvoidSpecificDataProviderAPI) { SetProviderField <IDataReader, float, float>((r, i) => GetFloat(r, i)); SetProviderField <IDataReader, double, double>((r, i) => GetDouble(r, i)); SetProviderField <IDataReader, decimal, decimal>((r, i) => GetDecimal(r, i)); SetField <IDataReader, float>((r, i) => GetFloat(r, i)); SetField <IDataReader, double>((r, i) => GetDouble(r, i)); SetField <IDataReader, decimal>((r, i) => GetDecimal(r, i)); } _sqlOptimizer = new InformixSqlOptimizer(SqlProviderFlags); }
public InformixDataProvider(string providerName) : base( providerName, GetMappingSchema(providerName, InformixProviderAdapter.GetInstance(providerName).MappingSchema), InformixProviderAdapter.GetInstance(providerName)) { SqlProviderFlags.IsParameterOrderDependent = !Adapter.IsIDSProvider; SqlProviderFlags.IsSubQueryTakeSupported = false; SqlProviderFlags.IsInsertOrUpdateSupported = false; SqlProviderFlags.IsGroupByExpressionSupported = false; SqlProviderFlags.IsCrossJoinSupported = false; SqlProviderFlags.IsCommonTableExpressionsSupported = true; SqlProviderFlags.IsSubQueryOrderBySupported = true; SqlProviderFlags.IsDistinctOrderBySupported = false; SqlProviderFlags.IsUpdateFromSupported = false; SqlProviderFlags.IsGroupByColumnRequred = true; SetCharField("CHAR", (r, i) => r.GetString(i).TrimEnd(' ')); SetCharField("NCHAR", (r, i) => r.GetString(i).TrimEnd(' ')); SetCharFieldToType <char>("CHAR", DataTools.GetCharExpression); SetCharFieldToType <char>("NCHAR", DataTools.GetCharExpression); SetProviderField <IDataReader, float, float>((r, i) => GetFloat(r, i)); SetProviderField <IDataReader, double, double>((r, i) => GetDouble(r, i)); SetProviderField <IDataReader, decimal, decimal>((r, i) => GetDecimal(r, i)); SetField <IDataReader, float>((r, i) => GetFloat(r, i)); SetField <IDataReader, double>((r, i) => GetDouble(r, i)); SetField <IDataReader, decimal>((r, i) => GetDecimal(r, i)); _sqlOptimizer = new InformixSqlOptimizer(SqlProviderFlags); if (Adapter.GetBigIntReaderMethod != null) { SetField(typeof(long), "BIGINT", Adapter.GetBigIntReaderMethod, false, dataReaderType: Adapter.DataReaderType); } if (Name == ProviderName.Informix && Adapter.DecimalType != null) { SetProviderField(Adapter.DecimalType, typeof(decimal), Adapter.GetDecimalReaderMethod !, dataReaderType: Adapter.DataReaderType); } if (Adapter.DateTimeType != null) { SetProviderField(Adapter.DateTimeType, typeof(DateTime), Adapter.GetDateTimeReaderMethod, dataReaderType: Adapter.DataReaderType); } if (Adapter.TimeSpanType != null) { SetProviderField(Adapter.TimeSpanType, typeof(TimeSpan), Adapter.GetTimeSpanReaderMethod, dataReaderType: Adapter.DataReaderType); } }