Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
            }
        }