├── .gitattributes ├── .gitignore ├── LICENSE ├── README.md ├── src ├── .editorconfig ├── Chloe.Dameng │ ├── Chloe.Dameng.csproj │ ├── DDL │ │ └── DamengTableGenerator.cs │ ├── DamengContext.cs │ ├── DamengContextProvider.cs │ ├── DamengOptions.cs │ ├── DataTypeAttribute.cs │ ├── DatabaseProvider.cs │ ├── DbExpressionTranslator.cs │ ├── DbValueExpressionTransformer.cs │ ├── EvaluableDbExpressionTransformer.cs │ ├── GlobalUsings.cs │ ├── MethodHandlers │ │ ├── AddDays_Handler.cs │ │ ├── AddHours_Handler.cs │ │ ├── AddMilliseconds_Handler.cs │ │ ├── AddMinutes_Handler.cs │ │ ├── AddMonths_Handler.cs │ │ ├── AddSeconds_Handler.cs │ │ ├── AddYears_Handler.cs │ │ ├── Average_Handler.cs │ │ ├── Compare_Handler.cs │ │ ├── Contains_Handler.cs │ │ ├── Count_Handler.cs │ │ ├── DiffDays_Handler.cs │ │ ├── DiffHours_Handler.cs │ │ ├── DiffMicroseconds_Handler.cs │ │ ├── DiffMilliseconds_Handler.cs │ │ ├── DiffMinutes_Handler.cs │ │ ├── DiffMonths_Handler.cs │ │ ├── DiffSeconds_Handler.cs │ │ ├── DiffYears_Handler.cs │ │ ├── Else_Handler.cs │ │ ├── EndsWith_Handler.cs │ │ ├── Equals_Handler.cs │ │ ├── In_Handler.cs │ │ ├── IsEqual_Handler.cs │ │ ├── IsNotEqual_Handler.cs │ │ ├── IsNullOrEmpty_Handler.cs │ │ ├── LongCount_Handler.cs │ │ ├── Max_Handler.cs │ │ ├── Min_Handler.cs │ │ ├── NewGuid_Handler.cs │ │ ├── Parse_Handler.cs │ │ ├── Replace_Handler.cs │ │ ├── StartsWith_Handler.cs │ │ ├── Substring_Handler.cs │ │ ├── Subtract_Handler.cs │ │ ├── Sum_Handler.cs │ │ ├── ToLower_Handler.cs │ │ ├── ToString_Handler.cs │ │ ├── ToUpper_Handler.cs │ │ ├── TrimEnd_Handler.cs │ │ ├── TrimStart_Handler.cs │ │ └── Trim_Handler.cs │ ├── PropertyHandlers │ │ ├── Date_Handler.cs │ │ ├── DayOfWeek_Handler.cs │ │ ├── Day_Handler.cs │ │ ├── Hour_Handler.cs │ │ ├── Length_Handler.cs │ │ ├── Millisecond_Handler.cs │ │ ├── Minute_Handler.cs │ │ ├── Month_Handler.cs │ │ ├── Now_Handler.cs │ │ ├── Second_Handler.cs │ │ ├── Today_Handler.cs │ │ ├── UtcNow_Handler.cs │ │ ├── Value_Handler.cs │ │ └── Year_Handler.cs │ ├── SqlGenerator.cs │ ├── SqlGenerator_AggregateHandlers.cs │ ├── SqlGenerator_BinaryWithMethodHandlers.cs │ ├── SqlGenerator_Helper.cs │ ├── SqlGenerator_MethodHandlers.cs │ ├── SqlGenerator_PropertyHandlers.cs │ ├── UtilConstants.cs │ └── Utils.cs ├── Chloe.Extension │ ├── Chloe.Extension.csproj │ ├── DbActionBag.cs │ ├── DbContextExtension.cs │ ├── DbContextExtension_NETCORE.cs │ ├── DbHelper.cs │ ├── DbSessionExtension.cs │ ├── FieldsResolver.cs │ ├── GlobalUsings.cs │ ├── MappingExtentions.cs │ ├── ParameterTwoExpressionReplacer.cs │ ├── QueryExtension.cs │ └── Utils.cs ├── Chloe.KingbaseES │ ├── Chloe.KingbaseES.csproj │ ├── DDL │ │ └── KingbaseESTableGenerator.cs │ ├── DataTypeAttribute.cs │ ├── DatabaseProvider.cs │ ├── DbExpressionTranslator.cs │ ├── DbValueExpressionTransformer.cs │ ├── EvaluableDbExpressionTransformer.cs │ ├── GlobalUsings.cs │ ├── KingbaseESContext.cs │ ├── KingbaseESContextProvider.cs │ ├── KingbaseESOptions.cs │ ├── KingbaseESSqlGeneratorOptions.cs │ ├── MethodHandlers │ │ ├── AddDays_Handler.cs │ │ ├── AddHours_Handler.cs │ │ ├── AddMilliseconds_Handler.cs │ │ ├── AddMinutes_Handler.cs │ │ ├── AddMonths_Handler.cs │ │ ├── AddSeconds_Handler.cs │ │ ├── AddYears_Handler.cs │ │ ├── Average_Handler.cs │ │ ├── Compare_Handler.cs │ │ ├── Contains_Handler.cs │ │ ├── Count_Handler.cs │ │ ├── DiffDays_Handler.cs │ │ ├── DiffHours_Handler.cs │ │ ├── DiffMicroseconds_Handler.cs │ │ ├── DiffMilliseconds_Handler.cs │ │ ├── DiffMinutes_Handler.cs │ │ ├── DiffMonths_Handler.cs │ │ ├── DiffSeconds_Handler.cs │ │ ├── DiffYears_Handler.cs │ │ ├── Else_Handler.cs │ │ ├── EndsWith_Handler.cs │ │ ├── Equals_Handler.cs │ │ ├── In_Handler.cs │ │ ├── IsEqual_Handler.cs │ │ ├── IsNotEqual_Handler.cs │ │ ├── IsNullOrEmpty_Handler.cs │ │ ├── LongCount_Handler.cs │ │ ├── Max_Handler.cs │ │ ├── Min_Handler.cs │ │ ├── NewGuid_Handler.cs │ │ ├── NextValueForSequence_Handler.cs │ │ ├── Parse_Handler.cs │ │ ├── Replace_Handler.cs │ │ ├── StartsWith_Handler.cs │ │ ├── Substring_Handler.cs │ │ ├── Subtract_Handler.cs │ │ ├── Sum_Handler.cs │ │ ├── ToLower_Handler.cs │ │ ├── ToString_Handler.cs │ │ ├── ToUpper_Handler.cs │ │ ├── TrimEnd_Handler.cs │ │ ├── TrimStart_Handler.cs │ │ └── Trim_Handler.cs │ ├── PropertyBuilderExtensions.cs │ ├── PropertyHandlers │ │ ├── Date_Handler.cs │ │ ├── DayOfWeek_Handler.cs │ │ ├── Day_Handler.cs │ │ ├── Hour_Handler.cs │ │ ├── Length_Handler.cs │ │ ├── Millisecond_Handler.cs │ │ ├── Minute_Handler.cs │ │ ├── Month_Handler.cs │ │ ├── Now_Handler.cs │ │ ├── Second_Handler.cs │ │ ├── Today_Handler.cs │ │ ├── UtcNow_Handler.cs │ │ ├── Value_Handler.cs │ │ └── Year_Handler.cs │ ├── SqlGenerator.cs │ ├── SqlGenerator_AggregateHandlers.cs │ ├── SqlGenerator_BinaryWithMethodHandlers.cs │ ├── SqlGenerator_Helper.cs │ ├── SqlGenerator_MethodHandlers.cs │ ├── SqlGenerator_PropertyHandlers.cs │ ├── UtilConstants.cs │ └── Utils.cs ├── Chloe.MySql │ ├── Chloe.MySql.csproj │ ├── DDL │ │ └── MySqlTableGenerator.cs │ ├── DataTypeAttribute.cs │ ├── DatabaseProvider.cs │ ├── DbExpressionTranslator.cs │ ├── EvaluableDbExpressionTransformer.cs │ ├── GlobalUsings.cs │ ├── MethodHandlers │ │ ├── AddDays_Handler.cs │ │ ├── AddHours_Handler.cs │ │ ├── AddMilliseconds_Handler.cs │ │ ├── AddMinutes_Handler.cs │ │ ├── AddMonths_Handler.cs │ │ ├── AddSeconds_Handler.cs │ │ ├── AddYears_Handler.cs │ │ ├── Average_Handler.cs │ │ ├── Compare_Handler.cs │ │ ├── Contains_Handler.cs │ │ ├── Count_Handler.cs │ │ ├── DiffDays_Handler.cs │ │ ├── DiffHours_Handler.cs │ │ ├── DiffMicroseconds_Handler.cs │ │ ├── DiffMilliseconds_Handler.cs │ │ ├── DiffMinutes_Handler.cs │ │ ├── DiffMonths_Handler.cs │ │ ├── DiffSeconds_Handler.cs │ │ ├── DiffYears_Handler.cs │ │ ├── Else_Handler.cs │ │ ├── EndsWith_Handler.cs │ │ ├── Equals_Handler.cs │ │ ├── In_Handler.cs │ │ ├── IsEqual_Handler.cs │ │ ├── IsNotEqual_Handler.cs │ │ ├── IsNullOrEmpty_Handler.cs │ │ ├── LongCount_Handler.cs │ │ ├── Max_Handler.cs │ │ ├── Min_Handler.cs │ │ ├── NewGuid_Handler.cs │ │ ├── Parse_Handler.cs │ │ ├── Replace_Handler.cs │ │ ├── StartsWith_Handler.cs │ │ ├── Substring_Handler.cs │ │ ├── Sum_Handler.cs │ │ ├── ToLower_Handler.cs │ │ ├── ToString_Handler.cs │ │ ├── ToUpper_Handler.cs │ │ ├── TrimEnd_Handler.cs │ │ ├── TrimStart_Handler.cs │ │ └── Trim_Handler.cs │ ├── MySqlContext.cs │ ├── MySqlContextExtension.cs │ ├── MySqlContextProvider.cs │ ├── MySqlDbDeleteExpression.cs │ ├── MySqlDbUpdateExpression.cs │ ├── MySqlFunctions.cs │ ├── MySqlOptions.cs │ ├── PropertyBuilderExtensions.cs │ ├── PropertyHandlers │ │ ├── Date_Handler.cs │ │ ├── DayOfWeek_Handler.cs │ │ ├── Day_Handler.cs │ │ ├── Hour_Handler.cs │ │ ├── Length_Handler.cs │ │ ├── Millisecond_Handler.cs │ │ ├── Minute_Handler.cs │ │ ├── Month_Handler.cs │ │ ├── Now_Handler.cs │ │ ├── Second_Handler.cs │ │ ├── Today_Handler.cs │ │ ├── UtcNow_Handler.cs │ │ ├── Value_Handler.cs │ │ └── Year_Handler.cs │ ├── SqlGenerator.cs │ ├── SqlGenerator_AggregateHandlers.cs │ ├── SqlGenerator_BinaryWithMethodHandlers.cs │ ├── SqlGenerator_Helper.cs │ ├── SqlGenerator_MethodHandlers.cs │ ├── SqlGenerator_PropertyHandlers.cs │ ├── UtilConstants.cs │ └── Utils.cs ├── Chloe.Oracle │ ├── Chloe.Oracle.csproj │ ├── DDL │ │ └── OracleTableGenerator.cs │ ├── DataTypeAttribute.cs │ ├── DatabaseProvider.cs │ ├── DbExpressionTranslator.cs │ ├── DbParamCollection.cs │ ├── DbValueExpressionTransformer.cs │ ├── EvaluableDbExpressionTransformer.cs │ ├── GlobalUsings.cs │ ├── MethodHandlers │ │ ├── AddDays_Handler.cs │ │ ├── AddHours_Handler.cs │ │ ├── AddMilliseconds_Handler.cs │ │ ├── AddMinutes_Handler.cs │ │ ├── AddMonths_Handler.cs │ │ ├── AddSeconds_Handler.cs │ │ ├── AddYears_Handler.cs │ │ ├── Average_Handler.cs │ │ ├── Compare_Handler.cs │ │ ├── Contains_Handler.cs │ │ ├── Count_Handler.cs │ │ ├── DiffDays_Handler.cs │ │ ├── DiffHours_Handler.cs │ │ ├── DiffMicroseconds_Handler.cs │ │ ├── DiffMilliseconds_Handler.cs │ │ ├── DiffMinutes_Handler.cs │ │ ├── DiffMonths_Handler.cs │ │ ├── DiffSeconds_Handler.cs │ │ ├── DiffYears_Handler.cs │ │ ├── Else_Handler.cs │ │ ├── EndsWith_Handler.cs │ │ ├── Equals_Handler.cs │ │ ├── In_Handler.cs │ │ ├── IsEqual_Handler.cs │ │ ├── IsNotEqual_Handler.cs │ │ ├── IsNullOrEmpty_Handler.cs │ │ ├── LongCount_Handler.cs │ │ ├── Max_Handler.cs │ │ ├── MethodHandlerHelper.cs │ │ ├── Min_Handler.cs │ │ ├── NewGuid_Handler.cs │ │ ├── NextValueForSequence_Handler.cs │ │ ├── Parse_Handler.cs │ │ ├── Replace_Handler.cs │ │ ├── StartsWith_Handler.cs │ │ ├── Substring_Handler.cs │ │ ├── Sum_Handler.cs │ │ ├── ToLower_Handler.cs │ │ ├── ToString_Handler.cs │ │ ├── ToUpper_Handler.cs │ │ ├── TrimEnd_Handler.cs │ │ ├── TrimStart_Handler.cs │ │ └── Trim_Handler.cs │ ├── OracleContext.cs │ ├── OracleContextProvider.cs │ ├── OracleOptions.cs │ ├── OracleSemantics.cs │ ├── OracleSqlGeneratorOptions.cs │ ├── PropertyBuilderExtensions.cs │ ├── PropertyHandlers │ │ ├── Date_Handler.cs │ │ ├── DayOfWeek_Handler.cs │ │ ├── Day_Handler.cs │ │ ├── Hour_Handler.cs │ │ ├── Length_Handler.cs │ │ ├── Millisecond_Handler.cs │ │ ├── Minute_Handler.cs │ │ ├── Month_Handler.cs │ │ ├── Now_Handler.cs │ │ ├── ROWNUM_Handler.cs │ │ ├── Second_Handler.cs │ │ ├── Today_Handler.cs │ │ ├── UtcNow_Handler.cs │ │ ├── Value_Handler.cs │ │ └── Year_Handler.cs │ ├── SqlGenerator.cs │ ├── SqlGenerator_AggregateHandlers.cs │ ├── SqlGenerator_BinaryWithMethodHandlers.cs │ ├── SqlGenerator_Helper.cs │ ├── SqlGenerator_MethodHandlers.cs │ ├── SqlGenerator_PropertyHandlers.cs │ ├── UtilConstants.cs │ └── Utils.cs ├── Chloe.PostgreSQL │ ├── Chloe.PostgreSQL.csproj │ ├── DDL │ │ └── PostgreSQLTableGenerator.cs │ ├── DataTypeAttribute.cs │ ├── DatabaseProvider.cs │ ├── DbExpressionTranslator.cs │ ├── DbValueExpressionTransformer.cs │ ├── EvaluableDbExpressionTransformer.cs │ ├── GlobalUsings.cs │ ├── MethodHandlers │ │ ├── AddDays_Handler.cs │ │ ├── AddHours_Handler.cs │ │ ├── AddMilliseconds_Handler.cs │ │ ├── AddMinutes_Handler.cs │ │ ├── AddMonths_Handler.cs │ │ ├── AddSeconds_Handler.cs │ │ ├── AddYears_Handler.cs │ │ ├── Average_Handler.cs │ │ ├── Compare_Handler.cs │ │ ├── Contains_Handler.cs │ │ ├── Count_Handler.cs │ │ ├── DiffDays_Handler.cs │ │ ├── DiffHours_Handler.cs │ │ ├── DiffMicroseconds_Handler.cs │ │ ├── DiffMilliseconds_Handler.cs │ │ ├── DiffMinutes_Handler.cs │ │ ├── DiffMonths_Handler.cs │ │ ├── DiffSeconds_Handler.cs │ │ ├── DiffYears_Handler.cs │ │ ├── Else_Handler.cs │ │ ├── EndsWith_Handler.cs │ │ ├── Equals_Handler.cs │ │ ├── In_Handler.cs │ │ ├── IsEqual_Handler.cs │ │ ├── IsNotEqual_Handler.cs │ │ ├── IsNullOrEmpty_Handler.cs │ │ ├── LongCount_Handler.cs │ │ ├── Max_Handler.cs │ │ ├── Min_Handler.cs │ │ ├── NewGuid_Handler.cs │ │ ├── NextValueForSequence_Handler.cs │ │ ├── Parse_Handler.cs │ │ ├── Replace_Handler.cs │ │ ├── StartsWith_Handler.cs │ │ ├── Substring_Handler.cs │ │ ├── Subtract_Handler.cs │ │ ├── Sum_Handler.cs │ │ ├── ToLower_Handler.cs │ │ ├── ToString_Handler.cs │ │ ├── ToUpper_Handler.cs │ │ ├── TrimEnd_Handler.cs │ │ ├── TrimStart_Handler.cs │ │ └── Trim_Handler.cs │ ├── PostgreSQLContext.cs │ ├── PostgreSQLContextProvider.cs │ ├── PostgreSQLContextProvider_Helper.cs │ ├── PostgreSQLOptions.cs │ ├── PostgreSQLSqlGeneratorOptions.cs │ ├── PropertyBuilderExtensions.cs │ ├── PropertyHandlers │ │ ├── Date_Handler.cs │ │ ├── DayOfWeek_Handler.cs │ │ ├── Day_Handler.cs │ │ ├── Hour_Handler.cs │ │ ├── Length_Handler.cs │ │ ├── Millisecond_Handler.cs │ │ ├── Minute_Handler.cs │ │ ├── Month_Handler.cs │ │ ├── Now_Handler.cs │ │ ├── Second_Handler.cs │ │ ├── Today_Handler.cs │ │ ├── UtcNow_Handler.cs │ │ ├── Value_Handler.cs │ │ └── Year_Handler.cs │ ├── SqlGenerator.cs │ ├── SqlGenerator_AggregateHandlers.cs │ ├── SqlGenerator_BinaryWithMethodHandlers.cs │ ├── SqlGenerator_Helper.cs │ ├── SqlGenerator_MethodHandlers.cs │ ├── SqlGenerator_PropertyHandlers.cs │ ├── UtilConstants.cs │ └── Utils.cs ├── Chloe.SQLite │ ├── Chloe.SQLite.csproj │ ├── ChloeSQLiteCommand.cs │ ├── ChloeSQLiteConcurrentConnection.cs │ ├── ChloeSQLiteDataReader.cs │ ├── ChloeSQLiteTransaction.cs │ ├── ConcurrentDbConnectionFactory.cs │ ├── DDL │ │ └── SQLiteTableGenerator.cs │ ├── DataTypeAttribute.cs │ ├── DatabaseProvider.cs │ ├── DbExpressionTranslator.cs │ ├── EvaluableDbExpressionTransformer.cs │ ├── GlobalUsings.cs │ ├── MethodHandlers │ │ ├── AddDays_Handler.cs │ │ ├── AddHours_Handler.cs │ │ ├── AddMilliseconds_Handler.cs │ │ ├── AddMinutes_Handler.cs │ │ ├── AddMonths_Handler.cs │ │ ├── AddSeconds_Handler.cs │ │ ├── AddYears_Handler.cs │ │ ├── Average_Handler.cs │ │ ├── Compare_Handler.cs │ │ ├── Contains_Handler.cs │ │ ├── Count_Handler.cs │ │ ├── DiffDays_Handler.cs │ │ ├── DiffHours_Handler.cs │ │ ├── DiffMicroseconds_Handler.cs │ │ ├── DiffMilliseconds_Handler.cs │ │ ├── DiffMinutes_Handler.cs │ │ ├── DiffMonths_Handler.cs │ │ ├── DiffSeconds_Handler.cs │ │ ├── DiffYears_Handler.cs │ │ ├── Else_Handler.cs │ │ ├── EndsWith_Handler.cs │ │ ├── Equals_Handler.cs │ │ ├── In_Handler.cs │ │ ├── IsEqual_Handler.cs │ │ ├── IsNotEqual_Handler.cs │ │ ├── IsNullOrEmpty_Handler.cs │ │ ├── LongCount_Handler.cs │ │ ├── Max_Handler.cs │ │ ├── Min_Handler.cs │ │ ├── NewGuid_Handler.cs │ │ ├── Parse_Handler.cs │ │ ├── Replace_Handler.cs │ │ ├── StartsWith_Handler.cs │ │ ├── Substring_Handler.cs │ │ ├── Sum_Handler.cs │ │ ├── ToLower_Handler.cs │ │ ├── ToString_Handler.cs │ │ ├── ToUpper_Handler.cs │ │ ├── TrimEnd_Handler.cs │ │ ├── TrimStart_Handler.cs │ │ └── Trim_Handler.cs │ ├── PropertyBuilderExtensions.cs │ ├── PropertyHandlers │ │ ├── Date_Handler.cs │ │ ├── DayOfWeek_Handler.cs │ │ ├── Day_Handler.cs │ │ ├── Hour_Handler.cs │ │ ├── Length_Handler.cs │ │ ├── Millisecond_Handler.cs │ │ ├── Minute_Handler.cs │ │ ├── Month_Handler.cs │ │ ├── Now_Handler.cs │ │ ├── Second_Handler.cs │ │ ├── Today_Handler.cs │ │ ├── UtcNow_Handler.cs │ │ ├── Value_Handler.cs │ │ └── Year_Handler.cs │ ├── ReaderWriterLockWrapper.cs │ ├── SQLiteContext.cs │ ├── SQLiteContextProvider.cs │ ├── SQLiteOptions.cs │ ├── SqlGenerator.cs │ ├── SqlGenerator_AggregateHandlers.cs │ ├── SqlGenerator_BinaryWithMethodHandlers.cs │ ├── SqlGenerator_Helper.cs │ ├── SqlGenerator_MethodHandlers.cs │ ├── SqlGenerator_PropertyHandlers.cs │ ├── UtilConstants.cs │ └── Utils.cs ├── Chloe.SqlServer │ ├── Chloe.SqlServer.csproj │ ├── DDL │ │ └── SqlServerTableGenerator.cs │ ├── DataTypeAttribute.cs │ ├── DatabaseProvider.cs │ ├── DbExpressionTranslator.cs │ ├── DbParamCollection.cs │ ├── DbValueExpressionTransformer.cs │ ├── DefaultDbConnectionFactory.cs │ ├── EvaluableDbExpressionTransformer.cs │ ├── GlobalUsings.cs │ ├── MethodHandlers │ │ ├── Abs_Handler.cs │ │ ├── AddDays_Handler.cs │ │ ├── AddHours_Handler.cs │ │ ├── AddMilliseconds_Handler.cs │ │ ├── AddMinutes_Handler.cs │ │ ├── AddMonths_Handler.cs │ │ ├── AddSeconds_Handler.cs │ │ ├── AddYears_Handler.cs │ │ ├── Average_Handler.cs │ │ ├── Compare_Handler.cs │ │ ├── Contains_Handler.cs │ │ ├── Count_Handler.cs │ │ ├── DiffDays_Handler.cs │ │ ├── DiffHours_Handler.cs │ │ ├── DiffMicroseconds_Handler.cs │ │ ├── DiffMilliseconds_Handler.cs │ │ ├── DiffMinutes_Handler.cs │ │ ├── DiffMonths_Handler.cs │ │ ├── DiffSeconds_Handler.cs │ │ ├── DiffYears_Handler.cs │ │ ├── Else_Handler.cs │ │ ├── EndsWith_Handler.cs │ │ ├── Equals_Handler.cs │ │ ├── In_Handler.cs │ │ ├── IsEqual_Handler.cs │ │ ├── IsNotEqual_Handler.cs │ │ ├── IsNullOrEmpty_Handler.cs │ │ ├── LongCount_Handler.cs │ │ ├── Max_Handler.cs │ │ ├── Min_Handler.cs │ │ ├── NewGuid_Handler.cs │ │ ├── NextValueForSequence_Handler.cs │ │ ├── Parse_Handler.cs │ │ ├── Replace_Handler.cs │ │ ├── StartsWith_Handler.cs │ │ ├── Substring_Handler.cs │ │ ├── Sum_Handler.cs │ │ ├── ToLower_Handler.cs │ │ ├── ToString_Handler.cs │ │ ├── ToUpper_Handler.cs │ │ ├── TrimEnd_Handler.cs │ │ ├── TrimStart_Handler.cs │ │ └── Trim_Handler.cs │ ├── MsSqlContext.cs │ ├── MsSqlContextExtension.cs │ ├── MsSqlContextProvider.cs │ ├── MsSqlContextProvider_Helper.cs │ ├── MsSqlOptions.cs │ ├── PagingMode.cs │ ├── PropertyBuilderExtensions.cs │ ├── PropertyDescriptorExtension.cs │ ├── PropertyHandlers │ │ ├── Date_Handler.cs │ │ ├── DayOfWeek_Handler.cs │ │ ├── Day_Handler.cs │ │ ├── Hour_Handler.cs │ │ ├── Length_Handler.cs │ │ ├── Millisecond_Handler.cs │ │ ├── Minute_Handler.cs │ │ ├── Month_Handler.cs │ │ ├── Now_Handler.cs │ │ ├── Second_Handler.cs │ │ ├── Today_Handler.cs │ │ ├── UtcNow_Handler.cs │ │ ├── Value_Handler.cs │ │ └── Year_Handler.cs │ ├── SqlGenerator.cs │ ├── SqlGenerator_AggregateHandlers.cs │ ├── SqlGenerator_BinaryWithMethodHandlers.cs │ ├── SqlGenerator_Helper.cs │ ├── SqlGenerator_MethodHandlers.cs │ ├── SqlGenerator_PropertyHandlers.cs │ ├── SqlServerSqlGeneratorOptions.cs │ ├── UtilConstants.cs │ └── Utils.cs ├── Chloe.sln ├── Chloe │ ├── Annotations │ │ ├── AutoIncrementAttribute.cs │ │ ├── ColumnAttribute.cs │ │ ├── DbFunctionAttribute.cs │ │ ├── NavigationAttribute.cs │ │ ├── NonAutoIncrementAttribute.cs │ │ ├── NotMappedAttribute.cs │ │ ├── NotNullAttribute.cs │ │ ├── SequenceAttribute.cs │ │ ├── TableAttribute.cs │ │ ├── UniqueIndexAttribute.cs │ │ └── UpdateIgnoreAttribute.cs │ ├── CaseWhen.cs │ ├── Chloe.csproj │ ├── CompareType.cs │ ├── Core │ │ ├── DbCommandFactor.cs │ │ ├── DbCommandInfo.cs │ │ ├── IAsyncDisposable.cs │ │ ├── IAsyncEnumerable.cs │ │ ├── IAsyncEnumerator.cs │ │ ├── IEntityState.cs │ │ ├── IFeatureEnumerable.cs │ │ ├── IFeatureEnumerator.cs │ │ ├── LinkedNode.cs │ │ └── TypeKind.cs │ ├── Data │ │ ├── AdoExtension.cs │ │ ├── AdoSession.cs │ │ ├── DataReaderConstant.cs │ │ ├── DataReaderDecorator.cs │ │ ├── DataReaderExtension.cs │ │ ├── DbCommandDecorator.cs │ │ ├── DbConnectionDecorator.cs │ │ ├── DbTransactionDecorator.cs │ │ ├── ExternalAdoSession.cs │ │ ├── IAdoSession.cs │ │ ├── IDbValueReader.cs │ │ ├── IQueryDataReader.cs │ │ ├── InnerAdoSession.cs │ │ ├── InternalAdoSession.cs │ │ ├── InternalDataReader.cs │ │ └── OutputParameter.cs │ ├── DataSourceDbContextProviderPair.cs │ ├── DbContext.cs │ ├── DbContextBase.cs │ ├── DbContextButler.cs │ ├── DbContextDecorator.cs │ ├── DbContextProvider.cs │ ├── DbContextProviderDecorator.cs │ ├── DbContextProvider_Helper.cs │ ├── DbExpressions │ │ ├── DbAddExpression.cs │ │ ├── DbAggregateExpression.cs │ │ ├── DbAndExpression.cs │ │ ├── DbBinaryExpression.cs │ │ ├── DbBitAndExpression.cs │ │ ├── DbBitOrExpression.cs │ │ ├── DbCaseWhenExpression.cs │ │ ├── DbCoalesceExpression.cs │ │ ├── DbColumn.cs │ │ ├── DbColumnAccessExpression.cs │ │ ├── DbColumnSegment.cs │ │ ├── DbColumnValuePair.cs │ │ ├── DbConstantExpression.cs │ │ ├── DbConvertExpression.cs │ │ ├── DbDeleteExpression.cs │ │ ├── DbDivideExpression.cs │ │ ├── DbEqualExpression.cs │ │ ├── DbExistsExpression.cs │ │ ├── DbExpression.cs │ │ ├── DbExpressionComparer.cs │ │ ├── DbExpressionEqualityComparer.cs │ │ ├── DbExpressionType.cs │ │ ├── DbExpressionVisitor.cs │ │ ├── DbExpressionVisitor`.cs │ │ ├── DbFromTableExpression.cs │ │ ├── DbGreaterThanExpression.cs │ │ ├── DbGreaterThanOrEqualExpression.cs │ │ ├── DbInsertExpression.cs │ │ ├── DbJoinTableExpression.cs │ │ ├── DbJoinType.cs │ │ ├── DbLessThanExpression.cs │ │ ├── DbLessThanOrEqualExpression.cs │ │ ├── DbMainTableExpression.cs │ │ ├── DbMemberAccessExpression.cs │ │ ├── DbMethodCallExpression.cs │ │ ├── DbModuloExpression.cs │ │ ├── DbMultiplyExpression.cs │ │ ├── DbNegateExpression.cs │ │ ├── DbNotEqualExpression.cs │ │ ├── DbNotExpression.cs │ │ ├── DbOrExpression.cs │ │ ├── DbOrderType.cs │ │ ├── DbOrdering.cs │ │ ├── DbParameterExpression.cs │ │ ├── DbSqlQueryExpression.cs │ │ ├── DbSubqueryExpression.cs │ │ ├── DbSubtractExpression.cs │ │ ├── DbTable.cs │ │ ├── DbTableExpression.cs │ │ ├── DbTableSegment.cs │ │ ├── DbUnaryExpression.cs │ │ └── DbUpdateExpression.cs │ ├── DbOptions.cs │ ├── DbParam.cs │ ├── DbParamList.cs │ ├── DbSession.cs │ ├── DbSessionProvider.cs │ ├── Descriptors │ │ ├── CollectionPropertyDescriptor.cs │ │ ├── ComplexPropertyDescriptor.cs │ │ ├── ConstructorDescriptor.cs │ │ ├── PrimitivePropertyDescriptor.cs │ │ ├── PropertyDescriptor.cs │ │ ├── PropertyDescriptorExtension.cs │ │ └── TypeDescriptor.cs │ ├── Entity │ │ ├── CollectionProperty.cs │ │ ├── CollectionPropertyBuilder.cs │ │ ├── CollectionPropertyBuilder`.cs │ │ ├── CollectionPropertyDefinition.cs │ │ ├── ComplexProperty.cs │ │ ├── ComplexPropertyBuilder.cs │ │ ├── ComplexPropertyBuilder`.cs │ │ ├── ComplexPropertyDefinition.cs │ │ ├── EntityType.cs │ │ ├── EntityTypeBuilder.cs │ │ ├── EntityTypeBuilder`.cs │ │ ├── ICollectionPropertyBuilder.cs │ │ ├── IComplexPropertyBuilder.cs │ │ ├── IEntityTypeBuilder.cs │ │ ├── IPrimitivePropertyBuilder.cs │ │ ├── PrimitiveProperty.cs │ │ ├── PrimitivePropertyBuilder.cs │ │ ├── PrimitivePropertyBuilder`.cs │ │ ├── PrimitivePropertyDefinition.cs │ │ ├── PropertyBase.cs │ │ ├── PropertyDefinition.cs │ │ ├── PropertyNameExtractor.cs │ │ └── TypeDefinition.cs │ ├── Exceptions │ │ ├── ChloeException.cs │ │ ├── OptimisticConcurrencyException.cs │ │ └── UnbelievableException.cs │ ├── Extensions │ │ ├── BitOperations.cs │ │ ├── DbContextProviderExtention.cs │ │ ├── DbExpressionExtension.cs │ │ ├── DbSessionExtension.cs │ │ ├── DbSessionProviderExtension.cs │ │ ├── DictionaryExtension.cs │ │ ├── EnumerableExtension.cs │ │ ├── ExpressionExtension.cs │ │ ├── HashCode.cs │ │ ├── ListExtension.cs │ │ ├── QueryExtension.cs │ │ ├── SystemExtension.cs │ │ └── TaskExtension.cs │ ├── GlobalUsings.cs │ ├── Helpers.cs │ ├── IDbContext.cs │ ├── IDbContextProvider.cs │ ├── IDbContextProviderFactory.cs │ ├── IDbSession.cs │ ├── IDbSessionProvider.cs │ ├── IGroupingQuery.cs │ ├── IIncludedCollectionQuery.cs │ ├── IIncludedObjectQuery.cs │ ├── IJoinQuery`.cs │ ├── IOrderedQuery`.cs │ ├── IPhysicDataSource.cs │ ├── IPhysicTable.cs │ ├── IQuery.cs │ ├── IQuery`.cs │ ├── ITransientTransaction.cs │ ├── Infrastructure │ │ ├── DbConfiguration.cs │ │ ├── EntityTypeContainer.cs │ │ ├── IDatabaseProvider.cs │ │ ├── IDbConnectionFactory.cs │ │ ├── IDbExpressionTranslator.cs │ │ ├── IDbParameterAssembler.cs │ │ ├── IDbValueConverter.cs │ │ ├── Interception │ │ │ ├── DbCommandInterceptionContext`.cs │ │ │ ├── DbInterception.cs │ │ │ └── IDbCommandInterceptor.cs │ │ ├── MappingType.cs │ │ ├── MappingTypeBuilder.cs │ │ └── MappingTypeSystem.cs │ ├── JoinType.cs │ ├── LockType.cs │ ├── Mapper │ │ ├── Activators │ │ │ ├── CollectionObjectActivator.cs │ │ │ ├── ComplexObjectActivator.cs │ │ │ ├── NullValueObjectActivator.cs │ │ │ ├── ObjectActivatorBase.cs │ │ │ ├── PrimitiveObjectActivator.cs │ │ │ └── RootEntityActivator.cs │ │ ├── Binders │ │ │ ├── CollectionMemberBinder.cs │ │ │ ├── ComplexMemberBinder.cs │ │ │ ├── MemberBinder.cs │ │ │ └── PrimitiveMemberBinder.cs │ │ ├── FieldMemberMap.cs │ │ ├── IEntityKey.cs │ │ ├── IFitter.cs │ │ ├── IMRM.cs │ │ ├── IMemberBinder.cs │ │ ├── IObjectActivator.cs │ │ ├── ObjectConstructor.cs │ │ └── ObjectMemberMapper.cs │ ├── PagingResult.cs │ ├── ParamDirection.cs │ ├── Query │ │ ├── DbExpressionVariableInjector.cs │ │ ├── ExpressionEqualityComparer.cs │ │ ├── ExpressionVariableReplacer.cs │ │ ├── GroupingQuery.cs │ │ ├── IQueryState.cs │ │ ├── IncludeQueryBase.cs │ │ ├── IncludedCollectionQuery.cs │ │ ├── IncludedObjectQuery.cs │ │ ├── Internals │ │ │ ├── DapperRow.cs │ │ │ ├── DapperRowMetaObject.cs │ │ │ ├── DapperRowObjectActivator.cs │ │ │ ├── DapperTable.cs │ │ │ ├── DataReaderEnumerator.cs │ │ │ ├── InternalQuery.cs │ │ │ ├── InternalSplitQuery.cs │ │ │ ├── InternalSqlQuery.cs │ │ │ └── QueryEnumerator.cs │ │ ├── JoinQueryParameterExpressionReplacer.cs │ │ ├── JoinQueryResult.cs │ │ ├── JoinQuery`.cs │ │ ├── JoinResult.cs │ │ ├── Mapping │ │ │ ├── CollectionObjectActivatorCreator.cs │ │ │ ├── ComplexObjectActivatorCreator.cs │ │ │ ├── IObjectActivatorCreator.cs │ │ │ └── PrimitiveObjectActivatorCreator.cs │ │ ├── MappingData.cs │ │ ├── Model │ │ │ ├── CollectionObjectModel.cs │ │ │ ├── ComplexObjectModel.cs │ │ │ ├── IObjectModel.cs │ │ │ ├── ObjectModelBase.cs │ │ │ ├── PrimitiveObjectModel.cs │ │ │ └── QueryModel.cs │ │ ├── OrderedQuery`.cs │ │ ├── Query.Async.cs │ │ ├── Query.Core.cs │ │ ├── QueryContext.cs │ │ ├── QueryExpressionEqualityComparer.cs │ │ ├── QueryHelper.cs │ │ ├── QueryOptions.cs │ │ ├── QueryPlan.cs │ │ ├── QueryState │ │ │ ├── AggregateQueryState.cs │ │ │ ├── DistinctQueryState.cs │ │ │ ├── GeneralQueryState.cs │ │ │ ├── GroupQueryState.cs │ │ │ ├── LimitQueryState.cs │ │ │ ├── QueryStateBase.cs │ │ │ ├── RootQueryState.cs │ │ │ ├── SkipQueryState.cs │ │ │ ├── SubqueryState.cs │ │ │ └── TakeQueryState.cs │ │ ├── Query`.cs │ │ ├── ScopeParameterDictionary.cs │ │ ├── SplitQuery │ │ │ ├── CollectionNavigationQueryExecutor.cs │ │ │ ├── CollectionStuffer.cs │ │ │ ├── ComplexNavigationQueryExecutor.cs │ │ │ ├── IsSplitQueryJudgment.cs │ │ │ ├── RootQueryExecutor.cs │ │ │ ├── SplitQueryExecutor.cs │ │ │ ├── SplitQueryNode.cs │ │ │ └── SplitQueryNodeCollector.cs │ │ ├── VariableSlot.cs │ │ └── Visitors │ │ │ ├── GroupKeySelectorParser.cs │ │ │ ├── JoinQueryExpressionResolver.cs │ │ │ ├── QueryExpressionResolver.cs │ │ │ ├── QueryExpressionResolverBase.cs │ │ │ └── SelectorResolver.cs │ ├── QueryExpressions │ │ ├── AggregateQueryExpression.cs │ │ ├── BindTwoWayExpression.cs │ │ ├── DistinctExpression.cs │ │ ├── ExcludeExpression.cs │ │ ├── GroupingQueryExpression.cs │ │ ├── IgnoreAllFiltersExpression.cs │ │ ├── IncludeExpression.cs │ │ ├── JoinQueryExpression.cs │ │ ├── OrderExpression.cs │ │ ├── PagingExpression.cs │ │ ├── QueryExpression.cs │ │ ├── QueryExpressionType.cs │ │ ├── QueryExpressionVisitor.cs │ │ ├── QueryExpressionVisitor`.cs │ │ ├── RootQueryExpression.cs │ │ ├── SelectExpression.cs │ │ ├── SkipExpression.cs │ │ ├── SplitQueryExpression.cs │ │ ├── TakeExpression.cs │ │ ├── TrackingExpression.cs │ │ └── WhereExpression.cs │ ├── RDBMS │ │ ├── DDL │ │ │ ├── TableCreateMode.cs │ │ │ ├── TableGenerateOptions.cs │ │ │ └── TableGenerator.cs │ │ ├── DbExpressionNormalizer.cs │ │ ├── DbParamCollection.cs │ │ ├── IDbParamCollection.cs │ │ ├── IMethodHandler.cs │ │ ├── IPropertyHandler.cs │ │ ├── ISqlBuilder.cs │ │ ├── MethodHandlers │ │ │ ├── AddDays_HandlerBase.cs │ │ │ ├── AddHours_HandlerBase.cs │ │ │ ├── AddMilliseconds_HandlerBase.cs │ │ │ ├── AddMinutes_HandlerBase.cs │ │ │ ├── AddMonths_HandlerBase.cs │ │ │ ├── AddSeconds_HandlerBase.cs │ │ │ ├── AddYears_HandlerBase.cs │ │ │ ├── Average_HandlerBase.cs │ │ │ ├── Compare_HandlerBase.cs │ │ │ ├── Contains_HandlerBase.cs │ │ │ ├── Count_HandlerBase.cs │ │ │ ├── DiffDays_HandlerBase.cs │ │ │ ├── DiffHours_HandlerBase.cs │ │ │ ├── DiffMicroseconds_HandlerBase.cs │ │ │ ├── DiffMilliseconds_HandlerBase.cs │ │ │ ├── DiffMinutes_HandlerBase.cs │ │ │ ├── DiffMonths_HandlerBase.cs │ │ │ ├── DiffSeconds_HandlerBase.cs │ │ │ ├── DiffYears_HandlerBase.cs │ │ │ ├── Else_HandlerBase.cs │ │ │ ├── EndsWith_HandlerBase.cs │ │ │ ├── Equals_HandlerBase.cs │ │ │ ├── In_HandlerBase.cs │ │ │ ├── IsEqual_HandlerBase.cs │ │ │ ├── IsNotEqual_HandlerBase.cs │ │ │ ├── IsNullOrEmpty_HandlerBase.cs │ │ │ ├── LongCount_HandlerBase.cs │ │ │ ├── Max_HandlerBase.cs │ │ │ ├── Min_HandlerBase.cs │ │ │ ├── NewGuid_HandlerBase.cs │ │ │ ├── NextValueForSequence_HandlerBase.cs │ │ │ ├── Parse_HandlerBase.cs │ │ │ ├── Replace_HandlerBase.cs │ │ │ ├── StartsWith_HandlerBase.cs │ │ │ ├── Substring_HandlerBase.cs │ │ │ ├── Subtract_HandlerBase.cs │ │ │ ├── Sum_HandlerBase.cs │ │ │ ├── ToLower_HandlerBase.cs │ │ │ ├── ToString_HandlerBase.cs │ │ │ ├── ToUpper_HandlerBase.cs │ │ │ ├── TrimEnd_HandlerBase.cs │ │ │ ├── TrimStart_HandlerBase.cs │ │ │ └── Trim_HandlerBase.cs │ │ ├── PropertyHandlers │ │ │ ├── Date_HandlerBase.cs │ │ │ ├── DayOfWeek_HandlerBase.cs │ │ │ ├── Day_HandlerBase.cs │ │ │ ├── Hour_HandlerBase.cs │ │ │ ├── Length_HandlerBase.cs │ │ │ ├── Millisecond_HandlerBase.cs │ │ │ ├── Minute_HandlerBase.cs │ │ │ ├── Month_HandlerBase.cs │ │ │ ├── Now_HandlerBase.cs │ │ │ ├── Second_HandlerBase.cs │ │ │ ├── Today_HandlerBase.cs │ │ │ ├── UtcNow_HandlerBase.cs │ │ │ ├── Value_HandlerBase.cs │ │ │ └── Year_HandlerBase.cs │ │ ├── SqlGeneratorBase.cs │ │ └── SqlGeneratorOptions.cs │ ├── Reflection │ │ ├── DelegateFactory.cs │ │ ├── DynamicTypeContainer.cs │ │ ├── Emit │ │ │ ├── ClassGenerator.cs │ │ │ ├── DelegateGenerator.cs │ │ │ └── EmitHelper.cs │ │ ├── IReadingOrdinal.cs │ │ ├── InstanceCreator.cs │ │ ├── InstanceCreatorContainer.cs │ │ ├── MemberGetter.cs │ │ ├── MemberGetterContainer.cs │ │ ├── MemberMapper.cs │ │ ├── MemberMapperContainer.cs │ │ ├── MemberSetter.cs │ │ ├── MemberSetterContainer.cs │ │ ├── MethodInvoker.cs │ │ ├── MethodInvokerContainer.cs │ │ ├── MultMemberMapper.cs │ │ ├── MultMemberMapperContainer.cs │ │ └── ReflectionExtension.cs │ ├── Sharding │ │ ├── Enumerables │ │ │ ├── AnyQueryEnumerable.cs │ │ │ ├── AverageQueryEnumerable.cs │ │ │ ├── CountQueryEnumerable.cs │ │ │ ├── GroupAggregateQueryEnumerable.cs │ │ │ ├── MaxMinQueryEnumerable.cs │ │ │ ├── NonPagingQueryEnumerable.cs │ │ │ ├── OrderedTableQueryEnumerable.cs │ │ │ ├── OrdinaryQueryEnumerable.cs │ │ │ ├── PagingQueryEnumerable.cs │ │ │ ├── SingleTablePagingQueryEnumerable.cs │ │ │ ├── SingleTableQueryEnumerable.cs │ │ │ ├── SumQueryEnumerable.cs │ │ │ └── UniqueDataQueryEnumerable.cs │ │ ├── GroupQueryProjection.cs │ │ ├── IOrderedFeatureEnumerator.cs │ │ ├── IShardingConfig.cs │ │ ├── IShardingConfigBuilder.cs │ │ ├── IShardingContext.cs │ │ ├── Internals │ │ │ └── ShardingInternalQuery.cs │ │ ├── Models │ │ │ ├── AggregateModel.cs │ │ │ ├── DataQueryModel.cs │ │ │ ├── GroupAggregateQueryModel.cs │ │ │ └── ShardingQueryModel.cs │ │ ├── OrderProperty.cs │ │ ├── OrderedFeatureEnumerable.cs │ │ ├── Ordering.cs │ │ ├── ParallelConcatEnumerable.cs │ │ ├── ParallelMergeOrderedEnumerable.cs │ │ ├── ParallelQueryContext.cs │ │ ├── PriorityQueue.cs │ │ ├── Queries │ │ │ ├── AggregateQuery.cs │ │ │ ├── KeyPagingQuery.cs │ │ │ ├── KeyQueryResult.cs │ │ │ ├── QueryResult.cs │ │ │ ├── ShardTableAggregateQuery.cs │ │ │ ├── ShardTableDataQuery.cs │ │ │ └── ShardTableGroupAggregateQuery.cs │ │ ├── QueryEnumerator.cs │ │ ├── QueryState │ │ │ ├── ShardingAggregateQueryState.cs │ │ │ ├── ShardingGroupQueryState.cs │ │ │ ├── ShardingLimitQueryState.cs │ │ │ ├── ShardingPagingQueryState.cs │ │ │ ├── ShardingQueryStateBase.cs │ │ │ ├── ShardingRootQueryState.cs │ │ │ ├── ShardingSelectQueryState.cs │ │ │ ├── ShardingSkipQueryState.cs │ │ │ └── ShardingTakeQueryState.cs │ │ ├── Routing │ │ │ ├── IRoutingStrategy.cs │ │ │ ├── IShardingRoute.cs │ │ │ ├── IShardingRouteFactory.cs │ │ │ ├── RouteDataSource.cs │ │ │ ├── RouteTable.cs │ │ │ └── RouteTableEqualityComparer.cs │ │ ├── ShardingConfigContainer.cs │ │ ├── ShardingDbContextProvider.Helpers.cs │ │ ├── ShardingDbContextProvider.cs │ │ ├── ShardingDbSessionProvider.cs │ │ ├── ShardingGroupingQuery.cs │ │ ├── ShardingHelpers.cs │ │ ├── ShardingKey.cs │ │ ├── ShardingOptions.cs │ │ ├── ShardingOrderedQuery.cs │ │ ├── ShardingQuery.Core.cs │ │ ├── ShardingQuery.cs │ │ ├── ShardingQueryContext.cs │ │ ├── ShardingQueryPlan.cs │ │ ├── SharedObjectPool.cs │ │ ├── TrackableFeatureEnumerator.cs │ │ └── Visitors │ │ │ ├── GroupKeySelectorPeeker.cs │ │ │ ├── GroupSelectorResolver.cs │ │ │ ├── ShardingQueryExpressionResolver.cs │ │ │ ├── ShardingTableDiscoverer.cs │ │ │ └── UniqueDataQueryAuthenticator.cs │ ├── Sql.cs │ ├── TrackingEntityContainer.cs │ ├── Utility │ │ ├── ConstantWrapper`.cs │ │ ├── KeyValuePairList.cs │ │ ├── PairList.cs │ │ ├── PrimaryKeyHelper.cs │ │ ├── PublicConstants.cs │ │ ├── PublicHelper.cs │ │ ├── StringSet.cs │ │ ├── UtilConstants.cs │ │ └── Utils.cs │ └── Visitors │ │ ├── BooleanResultExpressionTransformer.cs │ │ ├── DbExpressionEvaluableJudgment.cs │ │ ├── DbExpressionEvaluator.cs │ │ ├── DefaultExpressionParser.cs │ │ ├── DoesLambdaVariableWrapperExistJudgment.cs │ │ ├── DoesQueryObjectExistJudgment.cs │ │ ├── EvaluableDbExpressionTransformerBase.cs │ │ ├── ExcludeFieldExtractor.cs │ │ ├── ExpressionEvaluableJudgment.cs │ │ ├── ExpressionEvaluator.cs │ │ ├── ExpressionTraversal.cs │ │ ├── ExpressionVisitor.cs │ │ ├── ExpressionVisitorBase.cs │ │ ├── ExpressionVisitor`.cs │ │ ├── FilterPredicateParser.cs │ │ ├── GeneralExpressionParser.cs │ │ ├── InitMemberExtractor.cs │ │ ├── JoinConditionExpressionTransformer.cs │ │ ├── LambdaVariableWrapperExpressionTransformer.cs │ │ ├── ParameterExpressionReplacer.cs │ │ ├── QueryObjectExpressionTransformer.cs │ │ └── UpdateColumnExpressionParser.cs ├── ChloeDemo │ ├── Chloe.db │ ├── ChloeDemo.csproj │ ├── ChloeDiagnosticListenerInterceptor.cs │ ├── ChloeDiagnosticListenerNames.cs │ ├── ConsoleHelper.cs │ ├── DamengConnectionFactory.cs │ ├── DamengDemo.cs │ ├── DbBulkInsertExtension.cs │ ├── DbCommandInterceptor.cs │ ├── DbFunctions.cs │ ├── DbTypeConsts.cs │ ├── DemoBase.cs │ ├── Entities.cs │ ├── EntityMap.cs │ ├── KingbaseESConnectionFactory.cs │ ├── KingbaseESDemo.cs │ ├── MsSqlDemo.cs │ ├── MsSqlOdbcDemo.cs │ ├── MySqlConnectionFactory.cs │ ├── MySqlDemo.cs │ ├── OracleConnectionFactory.cs │ ├── OracleDemo.cs │ ├── PostgreSQLConnectionFactory.cs │ ├── PostgreSQLDemo.cs │ ├── PostgreSQL_StringLike_MethodHandler.cs │ ├── Product.cs │ ├── Program.cs │ ├── SQLiteConnectionFactory.cs │ ├── SQLiteDemo.cs │ ├── Sharding │ │ ├── Helpers.cs │ │ ├── Order.cs │ │ ├── OrderDbContextProviderFactory.cs │ │ ├── OrderShardingRoute.cs │ │ ├── ShardingQueryTest.cs │ │ ├── ShardingTest.cs │ │ └── ShardingTestImpl.cs │ ├── String_MappingType.cs │ ├── TestData.cs │ ├── TestEntity.cs │ ├── x64 │ │ └── SQLite.Interop.dll │ └── x86 │ │ └── SQLite.Interop.dll ├── lib │ ├── DmProvider.dll │ ├── Kdbndp.dll │ ├── MySql.Data.dll │ ├── Oracle.ManagedDataAccess.dll │ ├── System.Data.SQLite.dll │ └── System.Data.SQLite.xml └── tools │ ├── Chloe.Dameng.nuspec │ ├── Chloe.Extension.nuspec │ ├── Chloe.KingbaseES.nuspec │ ├── Chloe.MySql.nuspec │ ├── Chloe.Oracle.nuspec │ ├── Chloe.PostgreSQL.nuspec │ ├── Chloe.SQLite.nuspec │ ├── Chloe.SqlServer.nuspec │ ├── Chloe.nuspec │ ├── Pack-Chloe-All.bat │ └── nuget.exe └── 更新日志.md /src/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.cs] 2 | 3 | # CS1591: 缺少对公共可见类型或成员的 XML 注释 4 | dotnet_diagnostic.CS1591.severity = none 5 | 6 | # 简化 new 表达式 (IDE0090) 7 | dotnet_diagnostic.IDE0090.severity = none 8 | 9 | # 使用模式匹配来避免 as 后跟 null 检查 (IDE0019) 10 | dotnet_diagnostic.IDE0019.severity = none 11 | 12 | # 添加 readonly 修饰符 (IDE0044) 13 | dotnet_diagnostic.IDE0044.severity = none 14 | 15 | # 内联变量声明 (IDE0018) 16 | dotnet_diagnostic.IDE0018.severity = none 17 | 18 | # CA1822:将成员标记为 static 19 | dotnet_diagnostic.CA1822.severity = none -------------------------------------------------------------------------------- /src/Chloe.Dameng/DataTypeAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Dameng 2 | { 3 | public class DataTypeAttribute : Attribute 4 | { 5 | public DataTypeAttribute() 6 | { 7 | } 8 | public DataTypeAttribute(string name) 9 | { 10 | this.Name = name; 11 | } 12 | 13 | public string Name { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | global using System; 2 | global using System.Collections.Generic; 3 | global using System.Linq; 4 | global using System.Text; 5 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/AddDays_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class AddDays_Handler : AddDays_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "DAY", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/AddHours_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class AddHours_Handler : AddHours_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "HOUR", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/AddMilliseconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class AddMilliseconds_Handler : AddMilliseconds_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "MILLISECOND", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/AddMinutes_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class AddMinutes_Handler : AddMinutes_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "MINUTE", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/AddMonths_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class AddMonths_Handler : AddMonths_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "MONTH", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/AddSeconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class AddSeconds_Handler : AddSeconds_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "SECOND", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/AddYears_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class AddYears_Handler : AddYears_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "YEAR", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/Average_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class Average_Handler : Average_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Average(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/Compare_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Dameng.MethodHandlers 4 | { 5 | class Compare_Handler : Compare_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/DiffDays_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class DiffDays_Handler : DiffDays_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "DAY", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/DiffHours_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class DiffHours_Handler : DiffHours_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "HOUR", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/DiffMinutes_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class DiffMinutes_Handler : DiffMinutes_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "MINUTE", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/DiffMonths_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class DiffMonths_Handler : DiffMonths_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "MONTH", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/DiffSeconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class DiffSeconds_Handler : DiffSeconds_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "SECOND", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/DiffYears_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class DiffYears_Handler : DiffYears_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "YEAR", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/Else_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Dameng.MethodHandlers 4 | { 5 | class Else_Handler : Else_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/Equals_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Dameng.MethodHandlers 4 | { 5 | class Equals_Handler : Equals_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/In_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Dameng.MethodHandlers 4 | { 5 | class In_Handler : In_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/IsEqual_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Dameng.MethodHandlers 4 | { 5 | class IsEqual_Handler : IsEqual_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/IsNotEqual_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Dameng.MethodHandlers 4 | { 5 | class IsNotEqual_Handler : IsNotEqual_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/IsNullOrEmpty_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Dameng.MethodHandlers 4 | { 5 | class IsNullOrEmpty_Handler : IsNullOrEmpty_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/Max_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class Max_Handler : Max_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Max(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/Min_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class Min_Handler : Min_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Min(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/NewGuid_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class NewGuid_Handler : NewGuid_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("NEWID()"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/Parse_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Dameng.MethodHandlers 4 | { 5 | class Parse_Handler : Parse_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/Subtract_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Dameng.MethodHandlers 4 | { 5 | class Subtract_Handler : Subtract_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/Sum_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Dameng.MethodHandlers 6 | { 7 | class Sum_Handler : Sum_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Sum(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/MethodHandlers/ToString_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Dameng.MethodHandlers 4 | { 5 | class ToString_Handler : ToString_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/PropertyHandlers/DayOfWeek_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Dameng.PropertyHandlers 6 | { 7 | class DayOfWeek_Handler : DayOfWeek_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "WEEKDAY", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/PropertyHandlers/Day_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Dameng.PropertyHandlers 6 | { 7 | class Day_Handler : Day_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "DAY", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/PropertyHandlers/Hour_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Dameng.PropertyHandlers 6 | { 7 | class Hour_Handler : Hour_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "HOUR", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/PropertyHandlers/Length_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Dameng.PropertyHandlers 6 | { 7 | class Length_Handler : Length_HandlerBase 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/PropertyHandlers/Millisecond_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Dameng.PropertyHandlers 6 | { 7 | class Millisecond_Handler : Millisecond_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "MILLISECOND", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/PropertyHandlers/Minute_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Dameng.PropertyHandlers 6 | { 7 | class Minute_Handler : Minute_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "MINUTE", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/PropertyHandlers/Month_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Dameng.PropertyHandlers 6 | { 7 | class Month_Handler : Month_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "MONTH", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/PropertyHandlers/Now_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Dameng.PropertyHandlers 6 | { 7 | class Now_Handler : Now_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("NOW()"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/PropertyHandlers/Second_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Dameng.PropertyHandlers 6 | { 7 | class Second_Handler : Second_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "SECOND", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/PropertyHandlers/Today_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Dameng.PropertyHandlers 6 | { 7 | class Today_Handler : Today_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("CURDATE()"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/PropertyHandlers/UtcNow_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Dameng.PropertyHandlers 6 | { 7 | class UtcNow_Handler : UtcNow_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("GETUTCDATE()"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/PropertyHandlers/Value_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Dameng.PropertyHandlers 6 | { 7 | class Value_Handler : Value_HandlerBase 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/PropertyHandlers/Year_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Dameng.PropertyHandlers 6 | { 7 | public class Year_Handler : Year_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "YEAR", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/SqlGenerator_MethodHandlers.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | using System.Reflection; 3 | 4 | namespace Chloe.Dameng 5 | { 6 | internal partial class SqlGenerator : SqlGeneratorBase 7 | { 8 | static Dictionary InitMethodHandlers() 9 | { 10 | return PublicHelper.FindMethodHandlers(Assembly.GetExecutingAssembly()); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /src/Chloe.Dameng/SqlGenerator_PropertyHandlers.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | using System.Reflection; 3 | 4 | namespace Chloe.Dameng 5 | { 6 | partial class SqlGenerator : SqlGeneratorBase 7 | { 8 | static Dictionary InitPropertyHandlers() 9 | { 10 | return PublicHelper.FindPropertyHandlers(Assembly.GetExecutingAssembly()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.Dameng/UtilConstants.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Dameng 2 | { 3 | public static class UtilConstants 4 | { 5 | public const string LeftQuoteChar = "\""; 6 | public const string RightQuoteChar = "\""; 7 | 8 | public const string ParameterNamePlaceholder = ":"; 9 | public static readonly string ParameterNamePrefix = ParameterNamePlaceholder + "P_"; 10 | } 11 | } -------------------------------------------------------------------------------- /src/Chloe.Dameng/Utils.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Dameng 2 | { 3 | internal static class Utils 4 | { 5 | public static string QuoteName(string name) 6 | { 7 | return string.Concat(UtilConstants.LeftQuoteChar, name, UtilConstants.RightQuoteChar); 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /src/Chloe.Extension/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | global using System; 2 | global using System.Collections.Generic; 3 | global using System.Linq; 4 | -------------------------------------------------------------------------------- /src/Chloe.Extension/MappingExtentions.cs: -------------------------------------------------------------------------------- 1 | using System.Linq.Expressions; 2 | 3 | namespace Chloe.Entity 4 | { 5 | public static class MappingExtentions 6 | { 7 | public static IEntityTypeBuilder UpdateIgnore(this IEntityTypeBuilder entityTypeBuilder, Expression> property) 8 | { 9 | entityTypeBuilder.Property(property).UpdateIgnore(); 10 | return entityTypeBuilder; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/DataTypeAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.KingbaseES 2 | { 3 | public class DataTypeAttribute : Attribute 4 | { 5 | public DataTypeAttribute() 6 | { 7 | } 8 | public DataTypeAttribute(string name) 9 | { 10 | this.Name = name; 11 | } 12 | 13 | public string Name { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | global using System; 2 | global using System.Collections.Generic; 3 | global using System.Linq; 4 | global using System.Text; 5 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/KingbaseESSqlGeneratorOptions.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | 3 | namespace Chloe.KingbaseES 4 | { 5 | class KingbaseESSqlGeneratorOptions : SqlGeneratorOptions 6 | { 7 | public KingbaseESSqlGeneratorOptions() 8 | { 9 | 10 | } 11 | 12 | /// 13 | /// 是否将 sql 中的表名/字段名转成小写。 14 | /// 15 | public bool ConvertToLowercase { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/AddDays_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.KingbaseES.MethodHandlers 6 | { 7 | class AddDays_Handler : AddDays_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "days", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/AddHours_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.KingbaseES.MethodHandlers 6 | { 7 | class AddHours_Handler : AddHours_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "hours", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/AddMinutes_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.KingbaseES.MethodHandlers 6 | { 7 | class AddMinutes_Handler : AddMinutes_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "mins", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/AddMonths_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.KingbaseES.MethodHandlers 6 | { 7 | class AddMonths_Handler : AddMonths_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "months", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/AddSeconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.KingbaseES.MethodHandlers 6 | { 7 | class AddSeconds_Handler : AddSeconds_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "secs", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/AddYears_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.KingbaseES.MethodHandlers 6 | { 7 | class AddYears_Handler : AddYears_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "years", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/Average_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.KingbaseES.MethodHandlers 6 | { 7 | class Average_Handler : Average_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Average(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/Compare_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.KingbaseES.MethodHandlers 4 | { 5 | class Compare_Handler : Compare_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/DiffDays_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.KingbaseES.MethodHandlers 6 | { 7 | class DiffDays_Handler : DiffDays_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "day", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/DiffHours_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.KingbaseES.MethodHandlers 6 | { 7 | class DiffHours_Handler : DiffHours_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "hour", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/DiffYears_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.KingbaseES.MethodHandlers 6 | { 7 | class DiffYears_Handler : DiffYears_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "year", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/Else_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.KingbaseES.MethodHandlers 4 | { 5 | class Else_Handler : Else_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/Equals_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.KingbaseES.MethodHandlers 4 | { 5 | class Equals_Handler : Equals_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/In_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.KingbaseES.MethodHandlers 4 | { 5 | class In_Handler : In_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/IsEqual_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.KingbaseES.MethodHandlers 4 | { 5 | class IsEqual_Handler : IsEqual_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/IsNotEqual_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.KingbaseES.MethodHandlers 4 | { 5 | class IsNotEqual_Handler : IsNotEqual_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/IsNullOrEmpty_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.KingbaseES.MethodHandlers 4 | { 5 | class IsNullOrEmpty_Handler : IsNullOrEmpty_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/Max_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.KingbaseES.MethodHandlers 6 | { 7 | class Max_Handler : Max_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Max(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/Min_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.KingbaseES.MethodHandlers 6 | { 7 | class Min_Handler : Min_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Min(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/NewGuid_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.KingbaseES.MethodHandlers 6 | { 7 | class NewGuid_Handler : NewGuid_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("sys_guid()"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/Subtract_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.KingbaseES.MethodHandlers 4 | { 5 | class Subtract_Handler : Subtract_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/Sum_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.KingbaseES.MethodHandlers 6 | { 7 | class Sum_Handler : Sum_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Sum(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/MethodHandlers/ToString_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.KingbaseES.MethodHandlers 4 | { 5 | class ToString_Handler : ToString_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/PropertyHandlers/Day_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.KingbaseES.PropertyHandlers 6 | { 7 | class Day_Handler : Day_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "day", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/PropertyHandlers/Hour_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.KingbaseES.PropertyHandlers 6 | { 7 | class Hour_Handler : Hour_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "hour", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/PropertyHandlers/Length_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.KingbaseES.PropertyHandlers 6 | { 7 | class Length_Handler : Length_HandlerBase 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/PropertyHandlers/Minute_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.KingbaseES.PropertyHandlers 6 | { 7 | class Minute_Handler : Minute_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "minute", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/PropertyHandlers/Month_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.KingbaseES.PropertyHandlers 6 | { 7 | class Month_Handler : Month_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "month", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/PropertyHandlers/Now_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.KingbaseES.PropertyHandlers 6 | { 7 | class Now_Handler : Now_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("systimestamp"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/PropertyHandlers/Second_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.KingbaseES.PropertyHandlers 6 | { 7 | class Second_Handler : Second_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "second", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/PropertyHandlers/Today_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.KingbaseES.PropertyHandlers 6 | { 7 | class Today_Handler : Today_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("TRUNC(systimestamp,'dd')"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/PropertyHandlers/Value_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.KingbaseES.PropertyHandlers 6 | { 7 | class Value_Handler : Value_HandlerBase 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/PropertyHandlers/Year_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.KingbaseES.PropertyHandlers 6 | { 7 | public class Year_Handler : Year_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "year", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/SqlGenerator_MethodHandlers.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | using System.Reflection; 3 | 4 | namespace Chloe.KingbaseES 5 | { 6 | partial class SqlGenerator : SqlGeneratorBase 7 | { 8 | static Dictionary InitMethodHandlers() 9 | { 10 | return PublicHelper.FindMethodHandlers(Assembly.GetExecutingAssembly()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/SqlGenerator_PropertyHandlers.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | using System.Reflection; 3 | 4 | namespace Chloe.KingbaseES 5 | { 6 | partial class SqlGenerator : SqlGeneratorBase 7 | { 8 | static Dictionary InitPropertyHandlers() 9 | { 10 | return PublicHelper.FindPropertyHandlers(Assembly.GetExecutingAssembly()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/UtilConstants.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.KingbaseES 2 | { 3 | public static class UtilConstants 4 | { 5 | public const string LeftQuoteChar = "\""; 6 | public const string RightQuoteChar = "\""; 7 | 8 | public const string ParameterNamePlaceholder = "@"; 9 | public static readonly string ParameterNamePrefix = ParameterNamePlaceholder + "P_"; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.KingbaseES/Utils.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.KingbaseES 2 | { 3 | internal static class Utils 4 | { 5 | public static string QuoteName(string name, bool convertToLowercase) 6 | { 7 | if (convertToLowercase) 8 | return string.Concat(UtilConstants.LeftQuoteChar, name.ToLower(), UtilConstants.RightQuoteChar); 9 | 10 | return string.Concat(UtilConstants.LeftQuoteChar, name, UtilConstants.RightQuoteChar); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.MySql/DataTypeAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.MySql 2 | { 3 | public class DataTypeAttribute : Attribute 4 | { 5 | public DataTypeAttribute() 6 | { 7 | } 8 | public DataTypeAttribute(string name) 9 | { 10 | this.Name = name; 11 | } 12 | 13 | public string Name { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe.MySql/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | global using System; 2 | global using System.Collections.Generic; 3 | global using System.Linq; 4 | global using System.Text; 5 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/AddDays_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class AddDays_Handler : AddDays_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "DAY", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/AddHours_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class AddHours_Handler : AddHours_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "HOUR", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/AddMilliseconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class AddMilliseconds_Handler : AddMilliseconds_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "MILLISECOND", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/AddMinutes_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class AddMinutes_Handler : AddMinutes_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "MINUTE", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/AddMonths_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class AddMonths_Handler : AddMonths_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "MONTH", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/AddSeconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class AddSeconds_Handler : AddSeconds_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "SECOND", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/AddYears_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class AddYears_Handler : AddYears_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "YEAR", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/Average_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class Average_Handler : Average_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Average(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/Compare_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.MySql.MethodHandlers 4 | { 5 | class Compare_Handler : Compare_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/DiffDays_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class DiffDays_Handler : DiffDays_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "DAY", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/DiffHours_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class DiffHours_Handler : DiffHours_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "HOUR", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/DiffMilliseconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.MySql.MethodHandlers 5 | { 6 | class DiffMilliseconds_Handler : DiffMilliseconds_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/DiffMinutes_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class DiffMinutes_Handler : DiffMinutes_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "MINUTE", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/DiffMonths_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class DiffMonths_Handler : DiffMonths_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "MONTH", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/DiffSeconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class DiffSeconds_Handler : DiffSeconds_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "SECOND", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/DiffYears_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class DiffYears_Handler : DiffYears_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "YEAR", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/Else_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.MySql.MethodHandlers 4 | { 5 | class Else_Handler : Else_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/Equals_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.MySql.MethodHandlers 4 | { 5 | class Equals_Handler : Equals_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/In_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.MySql.MethodHandlers 4 | { 5 | class In_Handler : In_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/IsEqual_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.MySql.MethodHandlers 4 | { 5 | class IsEqual_Handler : IsEqual_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/IsNotEqual_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.MySql.MethodHandlers 4 | { 5 | class IsNotEqual_Handler : IsNotEqual_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/IsNullOrEmpty_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.MySql.MethodHandlers 4 | { 5 | class IsNullOrEmpty_Handler : IsNullOrEmpty_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/Max_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class Max_Handler : Max_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Max(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/Min_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class Min_Handler : Min_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Min(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/NewGuid_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class NewGuid_Handler : NewGuid_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("UUID()"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/Parse_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.MySql.MethodHandlers 4 | { 5 | class Parse_Handler : Parse_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/Sum_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.MySql.MethodHandlers 6 | { 7 | class Sum_Handler : Sum_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Sum(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MethodHandlers/ToString_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.MySql.MethodHandlers 4 | { 5 | class ToString_Handler : ToString_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MySqlDbDeleteExpression.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.MySql 4 | { 5 | class MySqlDbDeleteExpression : DbDeleteExpression 6 | { 7 | public MySqlDbDeleteExpression(DbTable table) : this(table, null) 8 | { 9 | } 10 | public MySqlDbDeleteExpression(DbTable table, DbExpression condition) : base(table, condition) 11 | { 12 | } 13 | 14 | public int Limits { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MySqlDbUpdateExpression.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.MySql 4 | { 5 | class MySqlDbUpdateExpression : DbUpdateExpression 6 | { 7 | public MySqlDbUpdateExpression(DbTable table) : this(table, null) 8 | { 9 | } 10 | public MySqlDbUpdateExpression(DbTable table, DbExpression condition) : base(table, condition) 11 | { 12 | } 13 | 14 | public int Limits { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Chloe.MySql/MySqlFunctions.cs: -------------------------------------------------------------------------------- 1 | using Chloe.Annotations; 2 | 3 | namespace Chloe.MySql 4 | { 5 | public static class MySqlFunctions 6 | { 7 | [DbFunctionAttribute("FIND_IN_SET")] 8 | public static bool FindInSet(string str, string strList) 9 | { 10 | throw new NotSupportedException(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.MySql/PropertyHandlers/DayOfWeek_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.MySql.PropertyHandlers 6 | { 7 | class DayOfWeek_Handler : DayOfWeek_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "DAYOFWEEK", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/PropertyHandlers/Day_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.MySql.PropertyHandlers 6 | { 7 | class Day_Handler : Day_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "DAY", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/PropertyHandlers/Hour_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.MySql.PropertyHandlers 6 | { 7 | class Hour_Handler : Hour_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "HOUR", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/PropertyHandlers/Length_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.MySql.PropertyHandlers 6 | { 7 | class Length_Handler : Length_HandlerBase 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.MySql/PropertyHandlers/Millisecond_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.MySql.PropertyHandlers 6 | { 7 | class Millisecond_Handler : Millisecond_HandlerBase 8 | { 9 | public override bool CanProcess(DbMemberAccessExpression exp) 10 | { 11 | return false; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/PropertyHandlers/Minute_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.MySql.PropertyHandlers 6 | { 7 | class Minute_Handler : Minute_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "MINUTE", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/PropertyHandlers/Month_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.MySql.PropertyHandlers 6 | { 7 | class Month_Handler : Month_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "MONTH", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/PropertyHandlers/Now_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.MySql.PropertyHandlers 6 | { 7 | class Now_Handler : Now_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("NOW()"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/PropertyHandlers/Second_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.MySql.PropertyHandlers 6 | { 7 | class Second_Handler : Second_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "SECOND", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/PropertyHandlers/Today_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.MySql.PropertyHandlers 6 | { 7 | class Today_Handler : Today_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("CURDATE()"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/PropertyHandlers/UtcNow_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.MySql.PropertyHandlers 6 | { 7 | class UtcNow_Handler : UtcNow_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("UTC_TIMESTAMP()"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/PropertyHandlers/Value_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.MySql.PropertyHandlers 6 | { 7 | class Value_Handler : Value_HandlerBase 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.MySql/PropertyHandlers/Year_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.MySql.PropertyHandlers 6 | { 7 | public class Year_Handler : Year_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "YEAR", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.MySql/SqlGenerator_MethodHandlers.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | using System.Reflection; 3 | 4 | namespace Chloe.MySql 5 | { 6 | partial class SqlGenerator : SqlGeneratorBase 7 | { 8 | static Dictionary InitMethodHandlers() 9 | { 10 | return PublicHelper.FindMethodHandlers(Assembly.GetExecutingAssembly()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.MySql/SqlGenerator_PropertyHandlers.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | using System.Reflection; 3 | 4 | namespace Chloe.MySql 5 | { 6 | partial class SqlGenerator : SqlGeneratorBase 7 | { 8 | static Dictionary InitPropertyHandlers() 9 | { 10 | return PublicHelper.FindPropertyHandlers(Assembly.GetExecutingAssembly()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.MySql/UtilConstants.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.MySql 2 | { 3 | public static class UtilConstants 4 | { 5 | public const string LeftQuoteChar = "`"; 6 | public const string RightQuoteChar = "`"; 7 | 8 | public const string ParameterNamePlaceholder = "?"; 9 | public static readonly string ParameterNamePrefix = ParameterNamePlaceholder + "P_"; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.MySql/Utils.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.MySql 2 | { 3 | internal static class Utils 4 | { 5 | public static string QuoteName(string name) 6 | { 7 | return string.Concat(UtilConstants.LeftQuoteChar, name, UtilConstants.RightQuoteChar); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/DataTypeAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Oracle 2 | { 3 | public class DataTypeAttribute : Attribute 4 | { 5 | public DataTypeAttribute() 6 | { 7 | } 8 | public DataTypeAttribute(string name) 9 | { 10 | this.Name = name; 11 | } 12 | 13 | public string Name { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | global using System; 2 | global using System.Collections.Generic; 3 | global using System.Linq; 4 | global using System.Text; 5 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/AddHours_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Oracle.MethodHandlers 6 | { 7 | class AddHours_Handler : AddHours_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "HOUR", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/AddMilliseconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.Oracle.MethodHandlers 5 | { 6 | class AddMilliseconds_Handler : AddMilliseconds_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/AddMinutes_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Oracle.MethodHandlers 6 | { 7 | class AddMinutes_Handler : AddMinutes_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "MINUTE", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/AddSeconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Oracle.MethodHandlers 6 | { 7 | class AddSeconds_Handler : AddSeconds_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "SECOND", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/Average_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Oracle.MethodHandlers 6 | { 7 | class Average_Handler : Average_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Average(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/Compare_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Oracle.MethodHandlers 4 | { 5 | class Compare_Handler : Compare_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/DiffMicroseconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.Oracle.MethodHandlers 5 | { 6 | class DiffMicroseconds_Handler : DiffMicroseconds_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/DiffMonths_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.Oracle.MethodHandlers 5 | { 6 | class DiffMonths_Handler : DiffMonths_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/DiffYears_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.Oracle.MethodHandlers 5 | { 6 | class DiffYears_Handler : DiffYears_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/Else_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Oracle.MethodHandlers 4 | { 5 | class Else_Handler : Else_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/Equals_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Oracle.MethodHandlers 4 | { 5 | class Equals_Handler : Equals_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/In_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Oracle.MethodHandlers 4 | { 5 | class In_Handler : In_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/IsEqual_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Oracle.MethodHandlers 4 | { 5 | class IsEqual_Handler : IsEqual_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/IsNotEqual_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Oracle.MethodHandlers 4 | { 5 | class IsNotEqual_Handler : IsNotEqual_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/IsNullOrEmpty_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Oracle.MethodHandlers 4 | { 5 | class IsNullOrEmpty_Handler : IsNullOrEmpty_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/Max_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Oracle.MethodHandlers 6 | { 7 | class Max_Handler : Max_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Max(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/Min_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Oracle.MethodHandlers 6 | { 7 | class Min_Handler : Min_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Min(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/Parse_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Oracle.MethodHandlers 4 | { 5 | class Parse_Handler : Parse_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/Sum_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.Oracle.MethodHandlers 6 | { 7 | class Sum_Handler : Sum_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Sum(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/MethodHandlers/ToString_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.Oracle.MethodHandlers 4 | { 5 | class ToString_Handler : ToString_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/OracleSqlGeneratorOptions.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | 3 | namespace Chloe.Oracle 4 | { 5 | class OracleSqlGeneratorOptions : SqlGeneratorOptions 6 | { 7 | public OracleSqlGeneratorOptions() 8 | { 9 | 10 | } 11 | 12 | /// 13 | /// 是否将 sql 中的表名/字段名转成大写。 14 | /// 15 | public bool ConvertToUppercase { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/PropertyHandlers/Day_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Oracle.PropertyHandlers 6 | { 7 | class Day_Handler : Day_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "dd", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/PropertyHandlers/Hour_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Oracle.PropertyHandlers 6 | { 7 | class Hour_Handler : Hour_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "hh24", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/PropertyHandlers/Length_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Oracle.PropertyHandlers 6 | { 7 | class Length_Handler : Length_HandlerBase 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/PropertyHandlers/Minute_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Oracle.PropertyHandlers 6 | { 7 | class Minute_Handler : Minute_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "mi", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/PropertyHandlers/Month_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Oracle.PropertyHandlers 6 | { 7 | class Month_Handler : Month_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "mm", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/PropertyHandlers/Now_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Oracle.PropertyHandlers 6 | { 7 | class Now_Handler : Now_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("SYSDATE"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/PropertyHandlers/Second_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Oracle.PropertyHandlers 6 | { 7 | class Second_Handler : Second_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "ss", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/PropertyHandlers/Today_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Oracle.PropertyHandlers 6 | { 7 | class Today_Handler : Today_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("TRUNC(SYSDATE,'DD')"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/PropertyHandlers/UtcNow_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Oracle.PropertyHandlers 6 | { 7 | class UtcNow_Handler : UtcNow_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("SYS_EXTRACT_UTC(SYSTIMESTAMP)"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/PropertyHandlers/Value_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Oracle.PropertyHandlers 6 | { 7 | class Value_Handler : Value_HandlerBase 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/PropertyHandlers/Year_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.Oracle.PropertyHandlers 6 | { 7 | public class Year_Handler : Year_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "yyyy", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/SqlGenerator_MethodHandlers.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | using System.Reflection; 3 | 4 | namespace Chloe.Oracle 5 | { 6 | partial class SqlGenerator : SqlGeneratorBase 7 | { 8 | static Dictionary InitMethodHandlers() 9 | { 10 | return PublicHelper.FindMethodHandlers(Assembly.GetExecutingAssembly()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.Oracle/SqlGenerator_PropertyHandlers.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | using System.Reflection; 3 | 4 | namespace Chloe.Oracle 5 | { 6 | partial class SqlGenerator : SqlGeneratorBase 7 | { 8 | static Dictionary InitPropertyHandlers() 9 | { 10 | return PublicHelper.FindPropertyHandlers(Assembly.GetExecutingAssembly()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/DataTypeAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.PostgreSQL 2 | { 3 | public class DataTypeAttribute : Attribute 4 | { 5 | public DataTypeAttribute() 6 | { 7 | } 8 | public DataTypeAttribute(string name) 9 | { 10 | this.Name = name; 11 | } 12 | 13 | public string Name { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | global using System; 2 | global using System.Collections.Generic; 3 | global using System.Linq; 4 | global using System.Text; 5 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/AddMinutes_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.PostgreSQL.MethodHandlers 6 | { 7 | class AddMinutes_Handler : AddMinutes_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "mins", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/AddMonths_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.PostgreSQL.MethodHandlers 6 | { 7 | class AddMonths_Handler : AddMonths_HandlerBase 8 | { 9 | public void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "months", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/AddSeconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.PostgreSQL.MethodHandlers 6 | { 7 | class AddSeconds_Handler : AddSeconds_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "secs", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/AddYears_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.PostgreSQL.MethodHandlers 6 | { 7 | class AddYears_Handler : AddYears_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "years", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/Average_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.PostgreSQL.MethodHandlers 6 | { 7 | class Average_Handler : Average_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Average(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/Compare_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.PostgreSQL.MethodHandlers 4 | { 5 | class Compare_Handler : Compare_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/DiffDays_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.PostgreSQL.MethodHandlers 5 | { 6 | class DiffDays_Handler : DiffDays_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/DiffHours_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.PostgreSQL.MethodHandlers 5 | { 6 | class DiffHours_Handler : DiffHours_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/DiffMicroseconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.PostgreSQL.MethodHandlers 5 | { 6 | class DiffMicroseconds_Handler : DiffMicroseconds_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/DiffMilliseconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.PostgreSQL.MethodHandlers 5 | { 6 | class DiffMilliseconds_Handler : DiffMilliseconds_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/DiffMinutes_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.PostgreSQL.MethodHandlers 5 | { 6 | class DiffMinutes_Handler : DiffMinutes_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/DiffMonths_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.PostgreSQL.MethodHandlers 5 | { 6 | class DiffMonths_Handler : DiffMonths_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/DiffSeconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.PostgreSQL.MethodHandlers 5 | { 6 | class DiffSeconds_Handler : DiffSeconds_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/DiffYears_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.PostgreSQL.MethodHandlers 5 | { 6 | class DiffYears_Handler : DiffYears_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/Else_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.PostgreSQL.MethodHandlers 4 | { 5 | class Else_Handler : Else_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/Equals_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.PostgreSQL.MethodHandlers 4 | { 5 | class Equals_Handler : Equals_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/In_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.PostgreSQL.MethodHandlers 4 | { 5 | class In_Handler : In_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/IsEqual_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.PostgreSQL.MethodHandlers 4 | { 5 | class IsEqual_Handler : IsEqual_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/IsNotEqual_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.PostgreSQL.MethodHandlers 4 | { 5 | class IsNotEqual_Handler : IsNotEqual_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/IsNullOrEmpty_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.PostgreSQL.MethodHandlers 4 | { 5 | class IsNullOrEmpty_Handler : IsNullOrEmpty_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/Max_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.PostgreSQL.MethodHandlers 6 | { 7 | class Max_Handler : Max_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Max(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/Min_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.PostgreSQL.MethodHandlers 6 | { 7 | class Min_Handler : Min_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Min(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/NewGuid_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.PostgreSQL.MethodHandlers 5 | { 6 | class NewGuid_Handler : NewGuid_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/Subtract_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.PostgreSQL.MethodHandlers 4 | { 5 | class Subtract_Handler : Subtract_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/Sum_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.PostgreSQL.MethodHandlers 6 | { 7 | class Sum_Handler : Sum_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Sum(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/MethodHandlers/ToString_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.PostgreSQL.MethodHandlers 4 | { 5 | class ToString_Handler : ToString_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/PostgreSQLSqlGeneratorOptions.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | 3 | namespace Chloe.PostgreSQL 4 | { 5 | class PostgreSQLSqlGeneratorOptions : SqlGeneratorOptions 6 | { 7 | public PostgreSQLSqlGeneratorOptions() 8 | { 9 | 10 | } 11 | 12 | /// 13 | /// 是否将 sql 中的表名/字段名转成小写。 14 | /// 15 | public bool ConvertToLowercase { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/PropertyHandlers/Date_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.PostgreSQL.PropertyHandlers 6 | { 7 | class Date_Handler : Date_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGeneratorBase.BuildCastState(generator, exp.Expression, "DATE"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/PropertyHandlers/DayOfWeek_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.PostgreSQL.PropertyHandlers 6 | { 7 | class DayOfWeek_Handler : DayOfWeek_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "DOW", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/PropertyHandlers/Day_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.PostgreSQL.PropertyHandlers 6 | { 7 | class Day_Handler : Day_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "DAY", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/PropertyHandlers/Hour_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.PostgreSQL.PropertyHandlers 6 | { 7 | class Hour_Handler : Hour_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "HOUR", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/PropertyHandlers/Length_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.PostgreSQL.PropertyHandlers 6 | { 7 | class Length_Handler : Length_HandlerBase 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/PropertyHandlers/Minute_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.PostgreSQL.PropertyHandlers 6 | { 7 | class Minute_Handler : Minute_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "MINUTE", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/PropertyHandlers/Month_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.PostgreSQL.PropertyHandlers 6 | { 7 | class Month_Handler : Month_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "MONTH", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/PropertyHandlers/Now_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.PostgreSQL.PropertyHandlers 6 | { 7 | class Now_Handler : Now_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("NOW()"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/PropertyHandlers/Second_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.PostgreSQL.PropertyHandlers 6 | { 7 | class Second_Handler : Second_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "SECOND", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/PropertyHandlers/Today_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.PostgreSQL.PropertyHandlers 6 | { 7 | class Today_Handler : Today_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGeneratorBase.BuildCastState(generator, "NOW()", "DATE"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/PropertyHandlers/UtcNow_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | using System.Reflection; 5 | 6 | namespace Chloe.PostgreSQL.PropertyHandlers 7 | { 8 | class UtcNow_Handler : UtcNow_HandlerBase 9 | { 10 | public override bool CanProcess(DbMemberAccessExpression exp) 11 | { 12 | return false; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/PropertyHandlers/Value_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.PostgreSQL.PropertyHandlers 6 | { 7 | class Value_Handler : Value_HandlerBase 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/PropertyHandlers/Year_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.PostgreSQL.PropertyHandlers 6 | { 7 | public class Year_Handler : Year_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "YEAR", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/SqlGenerator_MethodHandlers.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | using System.Reflection; 3 | 4 | namespace Chloe.PostgreSQL 5 | { 6 | partial class SqlGenerator : SqlGeneratorBase 7 | { 8 | static Dictionary InitMethodHandlers() 9 | { 10 | return PublicHelper.FindMethodHandlers(Assembly.GetExecutingAssembly()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/SqlGenerator_PropertyHandlers.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | using System.Reflection; 3 | 4 | namespace Chloe.PostgreSQL 5 | { 6 | partial class SqlGenerator : SqlGeneratorBase 7 | { 8 | static Dictionary InitPropertyHandlers() 9 | { 10 | return PublicHelper.FindPropertyHandlers(Assembly.GetExecutingAssembly()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/UtilConstants.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.PostgreSQL 2 | { 3 | public static class UtilConstants 4 | { 5 | public const string LeftQuoteChar = "\""; 6 | public const string RightQuoteChar = "\""; 7 | 8 | public const string ParameterNamePlaceholder = "@"; 9 | public static readonly string ParameterNamePrefix = ParameterNamePlaceholder + "P_"; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.PostgreSQL/Utils.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.PostgreSQL 2 | { 3 | internal static class Utils 4 | { 5 | public static string QuoteName(string name, bool convertToLowercase) 6 | { 7 | if (convertToLowercase) 8 | return string.Concat(UtilConstants.LeftQuoteChar, name.ToLower(), UtilConstants.RightQuoteChar); 9 | 10 | return string.Concat(UtilConstants.LeftQuoteChar, name, UtilConstants.RightQuoteChar); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/DataTypeAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.SQLite 2 | { 3 | public class DataTypeAttribute : Attribute 4 | { 5 | public DataTypeAttribute() 6 | { 7 | } 8 | public DataTypeAttribute(string name) 9 | { 10 | this.Name = name; 11 | } 12 | 13 | public string Name { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/AddDays_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SQLite.MethodHandlers 6 | { 7 | class AddDays_Handler : AddDays_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "days", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/AddHours_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SQLite.MethodHandlers 6 | { 7 | class AddHours_Handler : AddHours_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "hours", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/AddMilliseconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SQLite.MethodHandlers 6 | { 7 | class AddMilliseconds_Handler : AddMilliseconds_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "MILLISECOND", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/AddMinutes_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SQLite.MethodHandlers 6 | { 7 | class AddMinutes_Handler : AddMinutes_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "minutes", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/AddMonths_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SQLite.MethodHandlers 6 | { 7 | class AddMonths_Handler : AddMonths_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "months", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/AddSeconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SQLite.MethodHandlers 6 | { 7 | class AddSeconds_Handler : AddSeconds_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "seconds", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/AddYears_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SQLite.MethodHandlers 6 | { 7 | class AddYears_Handler : AddYears_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "years", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/Average_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SQLite.MethodHandlers 6 | { 7 | class Average_Handler : Average_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Average(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/Compare_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SQLite.MethodHandlers 4 | { 5 | class Compare_Handler : Compare_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/DiffDays_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SQLite.MethodHandlers 6 | { 7 | class DiffDays_Handler : DiffDays_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Append_DateDiff(generator, exp.Arguments[0], exp.Arguments[1], null); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/DiffHours_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SQLite.MethodHandlers 6 | { 7 | class DiffHours_Handler : DiffHours_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Append_DateDiff(generator, exp.Arguments[0], exp.Arguments[1], 24); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/DiffMicroseconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.SQLite.MethodHandlers 5 | { 6 | class DiffMicroseconds_Handler : DiffMicroseconds_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/DiffMilliseconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.SQLite.MethodHandlers 5 | { 6 | class DiffMilliseconds_Handler : DiffMilliseconds_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/DiffMinutes_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SQLite.MethodHandlers 6 | { 7 | class DiffMinutes_Handler : DiffMinutes_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Append_DateDiff(generator, exp.Arguments[0], exp.Arguments[1], 24 * 60); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/DiffSeconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SQLite.MethodHandlers 6 | { 7 | class DiffSeconds_Handler : DiffSeconds_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Append_DateDiff(generator, exp.Arguments[0], exp.Arguments[1], 24 * 60 * 60); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/DiffYears_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SQLite.MethodHandlers 6 | { 7 | class DiffYears_Handler : DiffYears_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Append_DiffYears(generator, exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/Else_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SQLite.MethodHandlers 4 | { 5 | class Else_Handler : Else_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/Equals_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SQLite.MethodHandlers 4 | { 5 | class Equals_Handler : Equals_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/In_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SQLite.MethodHandlers 4 | { 5 | class In_Handler : In_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/IsEqual_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SQLite.MethodHandlers 4 | { 5 | class IsEqual_Handler : IsEqual_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/IsNotEqual_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SQLite.MethodHandlers 4 | { 5 | class IsNotEqual_Handler : IsNotEqual_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/IsNullOrEmpty_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SQLite.MethodHandlers 4 | { 5 | class IsNullOrEmpty_Handler : IsNullOrEmpty_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/Max_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SQLite.MethodHandlers 6 | { 7 | class Max_Handler : Max_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Max(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/Min_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SQLite.MethodHandlers 6 | { 7 | class Min_Handler : Min_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Min(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/NewGuid_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS.MethodHandlers; 3 | 4 | namespace Chloe.SQLite.MethodHandlers 5 | { 6 | class NewGuid_Handler : NewGuid_HandlerBase 7 | { 8 | public override bool CanProcess(DbMethodCallExpression exp) 9 | { 10 | return false; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/Parse_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SQLite.MethodHandlers 4 | { 5 | class Parse_Handler : Parse_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/Sum_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SQLite.MethodHandlers 6 | { 7 | class Sum_Handler : Sum_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Sum(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/MethodHandlers/ToString_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SQLite.MethodHandlers 4 | { 5 | class ToString_Handler : ToString_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/PropertyHandlers/DayOfWeek_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SQLite.PropertyHandlers 6 | { 7 | class DayOfWeek_Handler : DayOfWeek_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "w", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/PropertyHandlers/Day_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SQLite.PropertyHandlers 6 | { 7 | class Day_Handler : Day_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "d", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/PropertyHandlers/Hour_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SQLite.PropertyHandlers 6 | { 7 | class Hour_Handler : Hour_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "H", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/PropertyHandlers/Length_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SQLite.PropertyHandlers 6 | { 7 | class Length_Handler : Length_HandlerBase 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/PropertyHandlers/Millisecond_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SQLite.PropertyHandlers 6 | { 7 | class Millisecond_Handler : Millisecond_HandlerBase 8 | { 9 | public override bool CanProcess(DbMemberAccessExpression exp) 10 | { 11 | return false; 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/PropertyHandlers/Minute_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SQLite.PropertyHandlers 6 | { 7 | class Minute_Handler : Minute_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "M", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/PropertyHandlers/Month_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SQLite.PropertyHandlers 6 | { 7 | class Month_Handler : Month_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "m", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/PropertyHandlers/Now_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SQLite.PropertyHandlers 6 | { 7 | class Now_Handler : Now_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("DATETIME('NOW','LOCALTIME')"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/PropertyHandlers/Second_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SQLite.PropertyHandlers 6 | { 7 | class Second_Handler : Second_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "S", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/PropertyHandlers/Today_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SQLite.PropertyHandlers 6 | { 7 | class Today_Handler : Today_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("DATE('NOW','LOCALTIME')"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/PropertyHandlers/UtcNow_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SQLite.PropertyHandlers 6 | { 7 | class UtcNow_Handler : UtcNow_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("DATETIME()"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/PropertyHandlers/Value_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SQLite.PropertyHandlers 6 | { 7 | class Value_Handler : Value_HandlerBase 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/PropertyHandlers/Year_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SQLite.PropertyHandlers 6 | { 7 | public class Year_Handler : Year_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "Y", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/SqlGenerator_MethodHandlers.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | using System.Reflection; 3 | 4 | namespace Chloe.SQLite 5 | { 6 | partial class SqlGenerator : SqlGeneratorBase 7 | { 8 | static Dictionary InitMethodHandlers() 9 | { 10 | return PublicHelper.FindMethodHandlers(Assembly.GetExecutingAssembly()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/SqlGenerator_PropertyHandlers.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | using System.Reflection; 3 | 4 | namespace Chloe.SQLite 5 | { 6 | partial class SqlGenerator : SqlGeneratorBase 7 | { 8 | static Dictionary InitPropertyHandlers() 9 | { 10 | return PublicHelper.FindPropertyHandlers(Assembly.GetExecutingAssembly()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/UtilConstants.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.SQLite 2 | { 3 | public static class UtilConstants 4 | { 5 | public const string LeftQuoteChar = "["; 6 | public const string RightQuoteChar = "]"; 7 | 8 | public const string ParameterNamePlaceholder = "@"; 9 | public static readonly string ParameterNamePrefix = ParameterNamePlaceholder + "P_"; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.SQLite/Utils.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.SQLite 2 | { 3 | internal static class Utils 4 | { 5 | public static string QuoteName(string name) 6 | { 7 | return string.Concat(UtilConstants.LeftQuoteChar, name, UtilConstants.RightQuoteChar); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/DataTypeAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.SqlServer 2 | { 3 | public class DataTypeAttribute : Attribute 4 | { 5 | public DataTypeAttribute() 6 | { 7 | } 8 | public DataTypeAttribute(string name) 9 | { 10 | this.Name = name; 11 | } 12 | 13 | public string Name { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | global using System; 2 | global using System.Collections.Generic; 3 | global using System.Linq; 4 | global using System.Text; 5 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/AddDays_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SqlServer.MethodHandlers 6 | { 7 | class AddDays_Handler : AddDays_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "DAY", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/AddHours_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SqlServer.MethodHandlers 6 | { 7 | class AddHours_Handler : AddHours_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "HOUR", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/AddMilliseconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SqlServer.MethodHandlers 6 | { 7 | class AddMilliseconds_Handler : AddMilliseconds_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "MILLISECOND", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/AddMinutes_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SqlServer.MethodHandlers 6 | { 7 | class AddMinutes_Handler : AddMinutes_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "MINUTE", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/AddMonths_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SqlServer.MethodHandlers 6 | { 7 | class AddMonths_Handler : AddMonths_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "MONTH", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/AddSeconds_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SqlServer.MethodHandlers 6 | { 7 | class AddSeconds_Handler : AddSeconds_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "SECOND", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/AddYears_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SqlServer.MethodHandlers 6 | { 7 | class AddYears_Handler : AddYears_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEADD(generator, "YEAR", exp); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/Average_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SqlServer.MethodHandlers 6 | { 7 | class Average_Handler : Average_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Average(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/Compare_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SqlServer.MethodHandlers 4 | { 5 | class Compare_Handler : Compare_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/DiffDays_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SqlServer.MethodHandlers 6 | { 7 | class DiffDays_Handler : DiffDays_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "DAY", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/DiffHours_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SqlServer.MethodHandlers 6 | { 7 | class DiffHours_Handler : DiffHours_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEDIFF(generator, "HOUR", exp.Arguments[0], exp.Arguments[1]); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/Else_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SqlServer.MethodHandlers 4 | { 5 | class Else_Handler : Else_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/Equals_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SqlServer.MethodHandlers 4 | { 5 | class Equals_Handler : Equals_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/In_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SqlServer.MethodHandlers 4 | { 5 | class In_Handler : In_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/IsEqual_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SqlServer.MethodHandlers 4 | { 5 | class IsEqual_Handler : IsEqual_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/IsNotEqual_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SqlServer.MethodHandlers 4 | { 5 | class IsNotEqual_Handler : IsNotEqual_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/IsNullOrEmpty_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SqlServer.MethodHandlers 4 | { 5 | class IsNullOrEmpty_Handler : IsNullOrEmpty_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/Max_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SqlServer.MethodHandlers 6 | { 7 | class Max_Handler : Max_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Max(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/Min_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SqlServer.MethodHandlers 6 | { 7 | class Min_Handler : Min_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Min(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/NewGuid_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SqlServer.MethodHandlers 6 | { 7 | class NewGuid_Handler : NewGuid_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("NEWID()"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/Parse_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SqlServer.MethodHandlers 4 | { 5 | class Parse_Handler : Parse_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/Sum_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.MethodHandlers; 4 | 5 | namespace Chloe.SqlServer.MethodHandlers 6 | { 7 | class Sum_Handler : Sum_HandlerBase 8 | { 9 | public override void Process(DbMethodCallExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.Aggregate_Sum(generator, exp.Arguments.First(), exp.Method.ReturnType); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/MethodHandlers/ToString_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS.MethodHandlers; 2 | 3 | namespace Chloe.SqlServer.MethodHandlers 4 | { 5 | class ToString_Handler : ToString_HandlerBase 6 | { 7 | 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/PagingMode.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.SqlServer 2 | { 3 | public enum PagingMode 4 | { 5 | ROW_NUMBER = 1, 6 | OFFSET_FETCH = 2 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/PropertyHandlers/Date_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SqlServer.PropertyHandlers 6 | { 7 | class Date_Handler : Date_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGeneratorBase.BuildCastState(generator, exp.Expression, "DATE"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/PropertyHandlers/Day_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SqlServer.PropertyHandlers 6 | { 7 | class Day_Handler : Day_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "DAY", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/PropertyHandlers/Hour_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SqlServer.PropertyHandlers 6 | { 7 | class Hour_Handler : Hour_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "HOUR", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/PropertyHandlers/Minute_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SqlServer.PropertyHandlers 6 | { 7 | class Minute_Handler : Minute_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "MINUTE", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/PropertyHandlers/Month_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SqlServer.PropertyHandlers 6 | { 7 | class Month_Handler : Month_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "MONTH", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/PropertyHandlers/Now_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SqlServer.PropertyHandlers 6 | { 7 | class Now_Handler : Now_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("GETDATE()"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/PropertyHandlers/Second_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SqlServer.PropertyHandlers 6 | { 7 | class Second_Handler : Second_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "SECOND", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/PropertyHandlers/Today_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SqlServer.PropertyHandlers 6 | { 7 | class Today_Handler : Today_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGeneratorBase.BuildCastState(generator, "GETDATE()", "DATE"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/PropertyHandlers/UtcNow_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SqlServer.PropertyHandlers 6 | { 7 | class UtcNow_Handler : UtcNow_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | generator.SqlBuilder.Append("GETUTCDATE()"); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/PropertyHandlers/Value_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SqlServer.PropertyHandlers 6 | { 7 | class Value_Handler : Value_HandlerBase 8 | { 9 | 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/PropertyHandlers/Year_Handler.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | using Chloe.RDBMS; 3 | using Chloe.RDBMS.PropertyHandlers; 4 | 5 | namespace Chloe.SqlServer.PropertyHandlers 6 | { 7 | public class Year_Handler : Year_HandlerBase 8 | { 9 | public override void Process(DbMemberAccessExpression exp, SqlGeneratorBase generator) 10 | { 11 | SqlGenerator.DbFunction_DATEPART(generator, "YEAR", exp.Expression); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/SqlGenerator_MethodHandlers.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | using System.Reflection; 3 | 4 | namespace Chloe.SqlServer 5 | { 6 | partial class SqlGenerator : SqlGeneratorBase 7 | { 8 | static Dictionary InitMethodHandlers() 9 | { 10 | return PublicHelper.FindMethodHandlers(Assembly.GetExecutingAssembly()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/SqlGenerator_PropertyHandlers.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | using System.Reflection; 3 | 4 | namespace Chloe.SqlServer 5 | { 6 | partial class SqlGenerator : SqlGeneratorBase 7 | { 8 | static Dictionary InitPropertyHandlers() 9 | { 10 | return PublicHelper.FindPropertyHandlers(Assembly.GetExecutingAssembly()); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/SqlServerSqlGeneratorOptions.cs: -------------------------------------------------------------------------------- 1 | using Chloe.RDBMS; 2 | 3 | namespace Chloe.SqlServer 4 | { 5 | class SqlServerSqlGeneratorOptions : SqlGeneratorOptions 6 | { 7 | public SqlServerSqlGeneratorOptions() 8 | { 9 | 10 | } 11 | 12 | public PagingMode PagingMode { get; set; } 13 | public bool BindParameterByName { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/UtilConstants.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.SqlServer 2 | { 3 | public static class UtilConstants 4 | { 5 | public const string LeftQuoteChar = "["; 6 | public const string RightQuoteChar = "]"; 7 | 8 | public const string ParameterNamePlaceholder = "@"; 9 | public static readonly string ParameterNamePrefix = ParameterNamePlaceholder + "P_"; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe.SqlServer/Utils.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.SqlServer 2 | { 3 | internal static class Utils 4 | { 5 | public static string QuoteName(string name) 6 | { 7 | return string.Concat(UtilConstants.LeftQuoteChar, name, UtilConstants.RightQuoteChar); 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Chloe/Annotations/AutoIncrementAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Annotations 2 | { 3 | [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)] 4 | public class AutoIncrementAttribute : Attribute 5 | { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/Chloe/Annotations/DbFunctionAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Annotations 2 | { 3 | [AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] 4 | public class DbFunctionAttribute : Attribute 5 | { 6 | public DbFunctionAttribute() 7 | { 8 | } 9 | public DbFunctionAttribute(string name) 10 | { 11 | this.Name = name; 12 | } 13 | public string Name { get; set; } 14 | public string Schema { get; set; } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Chloe/Annotations/NonAutoIncrementAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Annotations 2 | { 3 | [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)] 4 | public class NonAutoIncrementAttribute : Attribute 5 | { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/Chloe/Annotations/NotMappedAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Annotations 2 | { 3 | [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)] 4 | public class NotMappedAttribute : Attribute 5 | { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/Chloe/Annotations/NotNullAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Annotations 2 | { 3 | [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)] 4 | public class NotNullAttribute : Attribute 5 | { 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/Chloe/Annotations/UniqueIndexAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Annotations 2 | { 3 | /// 4 | /// 唯一索引 5 | /// 6 | [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)] 7 | public class UniqueIndexAttribute : Attribute 8 | { 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Chloe/Annotations/UpdateIgnoreAttribute.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Annotations 2 | { 3 | /// 4 | /// 更新忽略 5 | /// 6 | [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false)] 7 | public class UpdateIgnoreAttribute : Attribute 8 | { 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Chloe/Core/DbCommandInfo.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Core 2 | { 3 | public class DbCommandInfo 4 | { 5 | public string CommandText { get; set; } 6 | public List Parameters { get; set; } 7 | 8 | public DbParam[] GetParameters() 9 | { 10 | return this.Parameters.ToArray(); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe/Core/IAsyncDisposable.cs: -------------------------------------------------------------------------------- 1 | #if NETFX 2 | using System; 3 | 4 | namespace System 5 | { 6 | internal interface IAsyncDisposable 7 | { 8 | ValueTask DisposeAsync(); 9 | } 10 | } 11 | #endif 12 | -------------------------------------------------------------------------------- /src/Chloe/Core/IAsyncEnumerator.cs: -------------------------------------------------------------------------------- 1 | #if NETFX 2 | using System; 3 | 4 | namespace System 5 | { 6 | internal interface IAsyncEnumerator : IAsyncDisposable 7 | { 8 | T Current { get; } 9 | 10 | BoolResultTask MoveNextAsync(); 11 | } 12 | } 13 | #endif 14 | -------------------------------------------------------------------------------- /src/Chloe/Core/LinkedNode.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe 2 | { 3 | public class LinkedNode 4 | { 5 | public LinkedNode() 6 | { 7 | 8 | } 9 | 10 | public LinkedNode(T value) 11 | { 12 | this.Value = value; 13 | } 14 | 15 | public LinkedNode Previous { get; set; } 16 | public LinkedNode Next { get; set; } 17 | public T Value { get; set; } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/Chloe/Core/TypeKind.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe 2 | { 3 | public enum TypeKind 4 | { 5 | Primitive = 1, 6 | Complex = 2, 7 | Collection = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe/Data/InternalAdoSession.cs: -------------------------------------------------------------------------------- 1 | using System.Data; 2 | 3 | namespace Chloe.Data 4 | { 5 | class InternalAdoSession : AdoSession, IAdoSession, IDisposable 6 | { 7 | IDbConnection _dbConnection; 8 | 9 | public InternalAdoSession(IDbConnection conn) 10 | { 11 | this._dbConnection = conn; 12 | } 13 | 14 | public override IDbConnection DbConnection { get { return this._dbConnection; } } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Chloe/DbExpressions/DbBitAndExpression.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.DbExpressions 2 | { 3 | public class DbBitAndExpression : DbBinaryExpression 4 | { 5 | public DbBitAndExpression(Type type, DbExpression left, DbExpression right) : base(DbExpressionType.BitAnd, type, left, right) 6 | { 7 | } 8 | 9 | public override T Accept(DbExpressionVisitor visitor) 10 | { 11 | return visitor.VisitBitAnd(this); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe/DbExpressions/DbBitOrExpression.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.DbExpressions 2 | { 3 | public class DbBitOrExpression : DbBinaryExpression 4 | { 5 | public DbBitOrExpression(Type type, DbExpression left, DbExpression right) : base(DbExpressionType.BitOr, type, left, right) 6 | { 7 | } 8 | 9 | public override T Accept(DbExpressionVisitor visitor) 10 | { 11 | return visitor.VisitBitOr(this); 12 | } 13 | } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/DbExpressions/DbColumnValuePair.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.DbExpressions 2 | { 3 | public struct DbColumnValuePair 4 | { 5 | public DbColumnValuePair(DbColumn column, DbExpression value) 6 | { 7 | this.Column = column; 8 | this.Value = value; 9 | } 10 | 11 | public DbColumn Column { get; set; } 12 | public DbExpression Value { get; set; } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe/DbExpressions/DbConvertExpression.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.DbExpressions 2 | { 3 | public class DbConvertExpression : DbUnaryExpression 4 | { 5 | public DbConvertExpression(Type type, DbExpression operand) : base(DbExpressionType.Convert, type, operand) 6 | { 7 | 8 | } 9 | 10 | public override T Accept(DbExpressionVisitor visitor) 11 | { 12 | return visitor.VisitConvert(this); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/DbExpressions/DbFromTableExpression.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.DbExpressions 2 | { 3 | public class DbFromTableExpression : DbMainTableExpression 4 | { 5 | public DbFromTableExpression(DbTableSegment table) : base(DbExpressionType.FromTable, table) 6 | { 7 | } 8 | 9 | public override T Accept(DbExpressionVisitor visitor) 10 | { 11 | return visitor.VisitFromTable(this); 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe/DbExpressions/DbJoinType.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace Chloe.DbExpressions 3 | { 4 | public enum DbJoinType 5 | { 6 | InnerJoin, 7 | LeftJoin, 8 | RightJoin, 9 | FullJoin 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe/DbExpressions/DbNegateExpression.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.DbExpressions 2 | { 3 | public class DbNegateExpression : DbUnaryExpression 4 | { 5 | public DbNegateExpression(Type type, DbExpression operand) : base(DbExpressionType.Negate, type, operand) 6 | { 7 | 8 | } 9 | 10 | public override T Accept(DbExpressionVisitor visitor) 11 | { 12 | return visitor.VisitNegate(this); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/DbExpressions/DbNotExpression.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace Chloe.DbExpressions 3 | { 4 | public class DbNotExpression : DbUnaryExpression 5 | { 6 | public DbNotExpression(DbExpression operand) : base(DbExpressionType.Not, PublicConstants.TypeOfBoolean, operand) 7 | { 8 | 9 | } 10 | 11 | public override T Accept(DbExpressionVisitor visitor) 12 | { 13 | return visitor.VisitNot(this); 14 | } 15 | } 16 | 17 | } 18 | -------------------------------------------------------------------------------- /src/Chloe/DbExpressions/DbOrderType.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace Chloe.DbExpressions 3 | { 4 | public enum DbOrderType 5 | { 6 | Asc, 7 | Desc 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe/Entity/ICollectionPropertyBuilder.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Entity 2 | { 3 | public interface ICollectionPropertyBuilder 4 | { 5 | IEntityTypeBuilder DeclaringBuilder { get; } 6 | CollectionProperty Property { get; } 7 | } 8 | 9 | public interface ICollectionPropertyBuilder : ICollectionPropertyBuilder 10 | { 11 | new IEntityTypeBuilder DeclaringBuilder { get; } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe/Entity/PropertyBase.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace Chloe.Entity 4 | { 5 | public abstract class PropertyBase 6 | { 7 | protected PropertyBase(PropertyInfo property) 8 | { 9 | this.Property = property; 10 | } 11 | public PropertyInfo Property { get; private set; } 12 | public List Annotations { get; private set; } = new List(); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe/Exceptions/OptimisticConcurrencyException.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Exceptions 2 | { 3 | public class OptimisticConcurrencyException : ChloeException 4 | { 5 | public OptimisticConcurrencyException() : this("The number of affected rows is 0 when performing optimistic concurrent operation.") 6 | { 7 | 8 | } 9 | 10 | public OptimisticConcurrencyException(string message) : base(message) 11 | { 12 | 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/Exceptions/UnbelievableException.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Exceptions 2 | { 3 | public class UnbelievableException : Exception 4 | { 5 | public UnbelievableException() : base("曾经有一个真挚的 bug 摆在我面前,但我没有修复,等到你看到了这条消息我才后悔莫及,尘世间最痛苦的事莫过于此。如果上天可以给我再来一次的机会,我依然不会对这个 bug 进行修复,因为你是永远看不到这条消息的,洗洗睡吧。") 6 | { 7 | } 8 | 9 | public UnbelievableException(string message) : base(message) 10 | { 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe/Extensions/DbSessionExtension.cs: -------------------------------------------------------------------------------- 1 | using System.Data; 2 | 3 | namespace Chloe 4 | { 5 | public static class DbSessionExtension 6 | { 7 | public static void BeginTransaction(this IDbSession dbSession, IsolationLevel? il) 8 | { 9 | if (il == null) 10 | { 11 | dbSession.BeginTransaction(); 12 | return; 13 | } 14 | 15 | dbSession.BeginTransaction(il.Value); 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/Chloe/IDbContextProviderFactory.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe 2 | { 3 | public interface IDbContextProviderFactory 4 | { 5 | IDbContextProvider CreateDbContextProvider(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/Chloe/IOrderedQuery`.cs: -------------------------------------------------------------------------------- 1 | using System.Linq.Expressions; 2 | 3 | namespace Chloe 4 | { 5 | public interface IOrderedQuery : IQuery 6 | { 7 | IOrderedQuery ThenBy(Expression> keySelector); 8 | IOrderedQuery ThenByDesc(Expression> keySelector); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Chloe/IQuery.cs: -------------------------------------------------------------------------------- 1 | using Chloe.QueryExpressions; 2 | 3 | namespace Chloe 4 | { 5 | public interface IQuery 6 | { 7 | Type ElementType { get; } 8 | QueryExpression QueryExpression { get; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Chloe/Infrastructure/IDatabaseProvider.cs: -------------------------------------------------------------------------------- 1 | using System.Data; 2 | 3 | namespace Chloe.Infrastructure 4 | { 5 | public interface IDatabaseProvider 6 | { 7 | string DatabaseType { get; } 8 | IDbConnection CreateConnection(); 9 | IDbExpressionTranslator CreateDbExpressionTranslator(); 10 | string CreateParameterName(string name); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/JoinType.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace Chloe 3 | { 4 | public enum JoinType 5 | { 6 | InnerJoin, 7 | LeftJoin, 8 | RightJoin, 9 | FullJoin 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe/LockType.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe 2 | { 3 | public enum LockType 4 | { 5 | Unspecified = 0, 6 | NoLock = 1, 7 | UpdLock = 2 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe/Mapper/Binders/CollectionMemberBinder.cs: -------------------------------------------------------------------------------- 1 | using Chloe.Reflection; 2 | 3 | namespace Chloe.Mapper.Binders 4 | { 5 | public class CollectionMemberBinder : MemberBinder, IMemberBinder 6 | { 7 | public CollectionMemberBinder(MemberSetter setter, IObjectActivator activtor) : base(setter, activtor) 8 | { 9 | 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/Mapper/Binders/ComplexMemberBinder.cs: -------------------------------------------------------------------------------- 1 | using Chloe.Reflection; 2 | 3 | namespace Chloe.Mapper.Binders 4 | { 5 | public class ComplexMemberBinder : MemberBinder, IMemberBinder 6 | { 7 | public ComplexMemberBinder(MemberSetter setter, IObjectActivator activtor) : base(setter, activtor) 8 | { 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe/Mapper/IMemberBinder.cs: -------------------------------------------------------------------------------- 1 | using Chloe.Query; 2 | using System.Data; 3 | 4 | namespace Chloe.Mapper 5 | { 6 | public interface IMemberBinder 7 | { 8 | void Prepare(IDataReader reader); 9 | ValueTask Bind(QueryContext queryContext, object obj, IDataReader reader, bool @async); 10 | IMemberBinder Clone(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/Mapper/IObjectActivator.cs: -------------------------------------------------------------------------------- 1 | using Chloe.Query; 2 | using System.Data; 3 | 4 | namespace Chloe.Mapper 5 | { 6 | public interface IObjectActivator 7 | { 8 | void Prepare(IDataReader reader); 9 | ObjectResultTask CreateInstance(QueryContext queryContext, IDataReader reader, bool @async); 10 | IObjectActivator Clone(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/ParamDirection.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe 2 | { 3 | public enum ParamDirection 4 | { 5 | Input = 1, 6 | Output = 2, 7 | InputOutput = 3, 8 | ReturnValue = 6 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Chloe/Query/JoinQueryResult.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.Query 4 | { 5 | public class JoinQueryResult 6 | { 7 | public IObjectModel ResultModel { get; set; } 8 | public DbJoinTableExpression JoinTable { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Chloe/Query/Mapping/IObjectActivatorCreator.cs: -------------------------------------------------------------------------------- 1 | using Chloe.Mapper; 2 | 3 | namespace Chloe.Query.Mapping 4 | { 5 | public interface IObjectActivatorCreator 6 | { 7 | Type ObjectType { get; } 8 | bool IsRoot { get; set; } 9 | IObjectActivator CreateObjectActivator(bool isTrackingQuery); 10 | IFitter CreateFitter(bool isTrackingQuery); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/Query/QueryContext.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Query 2 | { 3 | public class QueryContext 4 | { 5 | public QueryContext(DbContextProvider dbContextProvider) 6 | { 7 | this.DbContextProvider = dbContextProvider; 8 | } 9 | 10 | public DbContextProvider DbContextProvider { get; set; } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/Query/QueryOptions.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace Chloe.Query 3 | { 4 | public class QueryOptions 5 | { 6 | public QueryOptions() 7 | { 8 | 9 | } 10 | 11 | public bool IsTracking { get; set; } 12 | 13 | public bool IgnoreFilters { get; set; } 14 | 15 | /// 16 | /// 导航查询时,子对象将父对象设置到子对象对应的属性上 17 | /// 18 | public bool BindTwoWay { get; set; } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Chloe/Query/QueryState/AggregateQueryState.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Query.QueryState 2 | { 3 | class AggregateQueryState : QueryStateBase, IQueryState 4 | { 5 | public AggregateQueryState(QueryContext context, QueryModel queryModel) : base(context, queryModel) 6 | { 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe/QueryExpressions/DistinctExpression.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.QueryExpressions 2 | { 3 | public class DistinctExpression : QueryExpression 4 | { 5 | public DistinctExpression(Type elementType, QueryExpression prevExpression) : base(QueryExpressionType.Distinct, elementType, prevExpression) 6 | { 7 | } 8 | public override T Accept(IQueryExpressionVisitor visitor) 9 | { 10 | return visitor.VisitDistinct(this); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/DDL/TableCreateMode.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.RDBMS.DDL 2 | { 3 | public enum TableCreateMode 4 | { 5 | CreateIfNotExists = 1, 6 | CreateNew = 2, 7 | Create = 3 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/DDL/TableGenerateOptions.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.RDBMS.DDL 2 | { 3 | public class TableGenerateOptions 4 | { 5 | public int DefaultStringLength { get; set; } = 255; 6 | public int DefaultStringKeyLength { get; set; } = 50; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/IDbParamCollection.cs: -------------------------------------------------------------------------------- 1 | using System.Data; 2 | 3 | namespace Chloe.RDBMS 4 | { 5 | public interface IDbParamCollection 6 | { 7 | int Count { get; } 8 | DbParam Find(object value, Type paramType, DbType? dbType); 9 | void Add(DbParam param); 10 | List ToParameterList(); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/AddDays_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class AddDays_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfDateTime) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/AddHours_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class AddHours_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfDateTime) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/AddMilliseconds_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class AddMilliseconds_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfDateTime) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/AddMinutes_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class AddMinutes_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfDateTime) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/AddMonths_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class AddMonths_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfDateTime) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/AddSeconds_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class AddSeconds_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfDateTime) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/AddYears_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class AddYears_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfDateTime) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/Average_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class Average_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfSql) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/Count_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class Count_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfSql) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/DiffDays_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class DiffDays_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfSql) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/DiffHours_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class DiffHours_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfSql) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/DiffMicroseconds_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class DiffMicroseconds_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfSql) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/DiffMilliseconds_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class DiffMilliseconds_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfSql) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/DiffMinutes_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class DiffMinutes_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfSql) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/DiffMonths_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class DiffMonths_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfSql) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/DiffSeconds_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class DiffSeconds_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfSql) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/DiffYears_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class DiffYears_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfSql) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/EndsWith_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class EndsWith_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method != PublicConstants.MethodInfo_String_EndsWith) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/LongCount_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class LongCount_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfSql) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/Max_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class Max_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfSql) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/Min_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class Min_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfSql) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/NewGuid_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class NewGuid_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method != PublicConstants.MethodInfo_Guid_NewGuid) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/NextValueForSequence_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class NextValueForSequence_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfSql) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/Replace_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class Replace_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method != PublicConstants.MethodInfo_String_Replace) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/StartsWith_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class StartsWith_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method != PublicConstants.MethodInfo_String_StartsWith) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/Sum_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class Sum_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method.DeclaringType != PublicConstants.TypeOfSql) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/ToLower_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class ToLower_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method != PublicConstants.MethodInfo_String_ToLower) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/ToUpper_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class ToUpper_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method != PublicConstants.MethodInfo_String_ToUpper) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/TrimEnd_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class TrimEnd_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method != PublicConstants.MethodInfo_String_TrimEnd) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/TrimStart_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class TrimStart_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method != PublicConstants.MethodInfo_String_TrimStart) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/MethodHandlers/Trim_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.MethodHandlers 4 | { 5 | public class Trim_HandlerBase : MethodHandlerBase 6 | { 7 | public override bool CanProcess(DbMethodCallExpression exp) 8 | { 9 | if (exp.Method != PublicConstants.MethodInfo_String_Trim) 10 | return false; 11 | 12 | return true; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/PropertyHandlers/Date_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.PropertyHandlers 4 | { 5 | public class Date_HandlerBase : PropertyHandlerBase 6 | { 7 | public override bool CanProcess(DbMemberAccessExpression exp) 8 | { 9 | return exp.Member == PublicConstants.PropertyInfo_DateTime_Date || exp.Member == PublicConstants.PropertyInfo_DateTimeOffset_Date; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/PropertyHandlers/DayOfWeek_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.PropertyHandlers 4 | { 5 | public class DayOfWeek_HandlerBase : PropertyHandlerBase 6 | { 7 | public override bool CanProcess(DbMemberAccessExpression exp) 8 | { 9 | return exp.Member == PublicConstants.PropertyInfo_DateTime_DayOfWeek || exp.Member == PublicConstants.PropertyInfo_DateTimeOffset_DayOfWeek; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/PropertyHandlers/Day_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.PropertyHandlers 4 | { 5 | public class Day_HandlerBase : PropertyHandlerBase 6 | { 7 | public override bool CanProcess(DbMemberAccessExpression exp) 8 | { 9 | return exp.Member == PublicConstants.PropertyInfo_DateTime_Day || exp.Member == PublicConstants.PropertyInfo_DateTimeOffset_Day; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/PropertyHandlers/Hour_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.PropertyHandlers 4 | { 5 | public class Hour_HandlerBase : PropertyHandlerBase 6 | { 7 | public override bool CanProcess(DbMemberAccessExpression exp) 8 | { 9 | return exp.Member == PublicConstants.PropertyInfo_DateTime_Hour || exp.Member == PublicConstants.PropertyInfo_DateTimeOffset_Hour; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/PropertyHandlers/Millisecond_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.PropertyHandlers 4 | { 5 | public class Millisecond_HandlerBase : PropertyHandlerBase 6 | { 7 | public override bool CanProcess(DbMemberAccessExpression exp) 8 | { 9 | return exp.Member == PublicConstants.PropertyInfo_DateTime_Millisecond || exp.Member == PublicConstants.PropertyInfo_DateTimeOffset_Millisecond; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/PropertyHandlers/Minute_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.PropertyHandlers 4 | { 5 | public class Minute_HandlerBase : PropertyHandlerBase 6 | { 7 | public override bool CanProcess(DbMemberAccessExpression exp) 8 | { 9 | return exp.Member == PublicConstants.PropertyInfo_DateTime_Minute || exp.Member == PublicConstants.PropertyInfo_DateTimeOffset_Minute; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/PropertyHandlers/Month_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.PropertyHandlers 4 | { 5 | public class Month_HandlerBase : PropertyHandlerBase 6 | { 7 | public override bool CanProcess(DbMemberAccessExpression exp) 8 | { 9 | return exp.Member == PublicConstants.PropertyInfo_DateTime_Month || exp.Member == PublicConstants.PropertyInfo_DateTimeOffset_Month; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/PropertyHandlers/Now_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace Chloe.RDBMS.PropertyHandlers 4 | { 5 | public class Now_HandlerBase : PropertyHandlerBase 6 | { 7 | public override MemberInfo GetCanProcessProperty() 8 | { 9 | return PublicConstants.PropertyInfo_DateTime_Now; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/PropertyHandlers/Second_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.PropertyHandlers 4 | { 5 | public class Second_HandlerBase : PropertyHandlerBase 6 | { 7 | public override bool CanProcess(DbMemberAccessExpression exp) 8 | { 9 | return exp.Member == PublicConstants.PropertyInfo_DateTime_Second || exp.Member == PublicConstants.PropertyInfo_DateTimeOffset_Second; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/PropertyHandlers/Today_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace Chloe.RDBMS.PropertyHandlers 4 | { 5 | public class Today_HandlerBase : PropertyHandlerBase 6 | { 7 | public override MemberInfo GetCanProcessProperty() 8 | { 9 | return PublicConstants.PropertyInfo_DateTime_Today; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/PropertyHandlers/UtcNow_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace Chloe.RDBMS.PropertyHandlers 4 | { 5 | public class UtcNow_HandlerBase : PropertyHandlerBase 6 | { 7 | public override MemberInfo GetCanProcessProperty() 8 | { 9 | return PublicConstants.PropertyInfo_DateTime_UtcNow; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/RDBMS/PropertyHandlers/Year_HandlerBase.cs: -------------------------------------------------------------------------------- 1 | using Chloe.DbExpressions; 2 | 3 | namespace Chloe.RDBMS.PropertyHandlers 4 | { 5 | public class Year_HandlerBase : PropertyHandlerBase 6 | { 7 | public override bool CanProcess(DbMemberAccessExpression exp) 8 | { 9 | return exp.Member == PublicConstants.PropertyInfo_DateTime_Year || exp.Member == PublicConstants.PropertyInfo_DateTimeOffset_Year; 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/Chloe/Reflection/IReadingOrdinal.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace Chloe.Reflection 3 | { 4 | public interface IReadingOrdinal 5 | { 6 | int Ordinal { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chloe/Reflection/InstanceCreator.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace Chloe.Reflection 3 | { 4 | public delegate object InstanceCreator(params object[] arguments); 5 | } 6 | -------------------------------------------------------------------------------- /src/Chloe/Reflection/MemberGetter.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace Chloe.Reflection 3 | { 4 | public delegate object MemberGetter(object instance); 5 | } 6 | -------------------------------------------------------------------------------- /src/Chloe/Reflection/MemberMapper.cs: -------------------------------------------------------------------------------- 1 | using System.Data; 2 | 3 | namespace Chloe.Reflection 4 | { 5 | public delegate void MemberMapper(object instance, IDataReader dataReader, int ordinal); 6 | } 7 | -------------------------------------------------------------------------------- /src/Chloe/Reflection/MemberSetter.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Reflection 2 | { 3 | public delegate void MemberSetter(object instance, object value); 4 | } 5 | -------------------------------------------------------------------------------- /src/Chloe/Reflection/MethodInvoker.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace Chloe.Reflection 3 | { 4 | public delegate object MethodInvoker(object instance, params object[] parameters); 5 | } 6 | -------------------------------------------------------------------------------- /src/Chloe/Reflection/MultMemberMapper.cs: -------------------------------------------------------------------------------- 1 | using System.Data; 2 | 3 | namespace Chloe.Reflection 4 | { 5 | public delegate void MultMemberMapper(object instance, IDataReader dataReader, IReadingOrdinal readingOrdinal); 6 | } 7 | -------------------------------------------------------------------------------- /src/Chloe/Sharding/IOrderedFeatureEnumerator.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Sharding 2 | { 3 | internal interface IOrderedFeatureEnumerator : IFeatureEnumerator, IComparable> 4 | { 5 | object[] GetOrderValues(); 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/Chloe/Sharding/Models/AggregateModel.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Sharding.Models 2 | { 3 | internal class AggregateModel 4 | { 5 | public decimal? Sum { get; set; } 6 | public long Count { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chloe/Sharding/OrderProperty.cs: -------------------------------------------------------------------------------- 1 | using Chloe.Reflection; 2 | 3 | namespace Chloe.Sharding 4 | { 5 | public class OrderProperty 6 | { 7 | public bool Ascending { get; set; } 8 | public MemberGetter ValueGetter { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Chloe/Sharding/Ordering.cs: -------------------------------------------------------------------------------- 1 | using System.Linq.Expressions; 2 | 3 | namespace Chloe.Sharding 4 | { 5 | public class Ordering 6 | { 7 | public LambdaExpression KeySelector { get; set; } 8 | public bool Ascending { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Chloe/Sharding/Queries/KeyQueryResult.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Sharding.Queries 2 | { 3 | class KeyQueryResult : QueryResult> 4 | { 5 | public List Keys => this.Result; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/Chloe/Sharding/Queries/QueryResult.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Sharding.Queries 2 | { 3 | class QueryResult 4 | { 5 | public IPhysicTable Table { get; set; } 6 | public T Result { get; set; } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/Chloe/Sharding/Routing/RouteDataSource.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Sharding.Routing 2 | { 3 | /// 4 | /// 表示一个数据源(数据库) 5 | /// 6 | public class RouteDataSource 7 | { 8 | /// 9 | /// 数据源(数据库)唯一标识(不要求必须是库名,只要是唯一标识就行),必填,不能为空。 10 | /// 11 | public string Name { get; set; } 12 | 13 | public IDbContextProviderFactory DbContextProviderFactory { get; set; } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/Chloe/Sharding/Routing/RouteTable.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Sharding.Routing 2 | { 3 | /// 4 | /// 表示一个表 5 | /// 6 | public class RouteTable 7 | { 8 | /// 9 | /// 实表表名 10 | /// 11 | public string Name { get; set; } 12 | public string Schema { get; set; } 13 | /// 14 | /// 数据源(数据库) 15 | /// 16 | public RouteDataSource DataSource { get; set; } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/Chloe/Sharding/ShardingKey.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | 3 | namespace Chloe.Sharding 4 | { 5 | class ShardingKey 6 | { 7 | public MemberInfo Member { get; set; } 8 | public object Value { get; set; } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Chloe/Sharding/ShardingOptions.cs: -------------------------------------------------------------------------------- 1 |  2 | namespace Chloe.Sharding 3 | { 4 | /// 5 | /// 分片相关的配置 6 | /// 7 | public class ShardingOptions 8 | { 9 | /// 10 | /// 每次查询单个数据库最多可打开的连接数。 11 | /// 12 | public int MaxConnectionsPerDataSource { get; set; } = 12; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Chloe/Sharding/ShardingQueryContext.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Sharding 2 | { 3 | class ShardingQueryContext 4 | { 5 | public ShardingQueryContext(ShardingDbContextProvider dbContextProvider) 6 | { 7 | this.DbContextProvider = dbContextProvider; 8 | } 9 | public ShardingDbContextProvider DbContextProvider { get; set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe/Sharding/ShardingQueryPlan.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Sharding 2 | { 3 | internal class ShardingQueryPlan 4 | { 5 | public ShardingQueryPlan() 6 | { 7 | 8 | } 9 | 10 | public ShardingQueryModel QueryModel { get; set; } 11 | 12 | public List Tables { get; set; } = new List(); 13 | public bool IsOrderedTables { get; set; } 14 | 15 | public IShardingContext ShardingContext { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Chloe/Utility/ConstantWrapper`.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe 2 | { 3 | public class ConstantWrapper 4 | { 5 | public ConstantWrapper(T value) 6 | { 7 | this.Value = value; 8 | } 9 | public T Value { get; private set; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Chloe/Utility/KeyValuePairList.cs: -------------------------------------------------------------------------------- 1 | namespace System.Collections.Generic 2 | { 3 | class KeyValuePairList : List> 4 | { 5 | public KeyValuePairList() 6 | { 7 | } 8 | public void Add(TKey key, TValue value) 9 | { 10 | this.Add(new KeyValuePair(key, value)); 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Chloe/Utility/PairList.cs: -------------------------------------------------------------------------------- 1 | namespace Chloe.Utility 2 | { 3 | public class PairList : List> 4 | { 5 | public PairList() 6 | { 7 | } 8 | public PairList(int capacity) : base(capacity) 9 | { 10 | } 11 | public void Add(T1 t1, T2 t2) 12 | { 13 | Tuple tuple = new Tuple(t1, t2); 14 | this.Add(tuple); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/ChloeDemo/Chloe.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shuxinqin/Chloe/109f3b20d0023516cf342a5737c968f197ffaea3/src/ChloeDemo/Chloe.db -------------------------------------------------------------------------------- /src/ChloeDemo/x64/SQLite.Interop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shuxinqin/Chloe/109f3b20d0023516cf342a5737c968f197ffaea3/src/ChloeDemo/x64/SQLite.Interop.dll -------------------------------------------------------------------------------- /src/ChloeDemo/x86/SQLite.Interop.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shuxinqin/Chloe/109f3b20d0023516cf342a5737c968f197ffaea3/src/ChloeDemo/x86/SQLite.Interop.dll -------------------------------------------------------------------------------- /src/lib/DmProvider.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shuxinqin/Chloe/109f3b20d0023516cf342a5737c968f197ffaea3/src/lib/DmProvider.dll -------------------------------------------------------------------------------- /src/lib/Kdbndp.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shuxinqin/Chloe/109f3b20d0023516cf342a5737c968f197ffaea3/src/lib/Kdbndp.dll -------------------------------------------------------------------------------- /src/lib/MySql.Data.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shuxinqin/Chloe/109f3b20d0023516cf342a5737c968f197ffaea3/src/lib/MySql.Data.dll -------------------------------------------------------------------------------- /src/lib/Oracle.ManagedDataAccess.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shuxinqin/Chloe/109f3b20d0023516cf342a5737c968f197ffaea3/src/lib/Oracle.ManagedDataAccess.dll -------------------------------------------------------------------------------- /src/lib/System.Data.SQLite.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shuxinqin/Chloe/109f3b20d0023516cf342a5737c968f197ffaea3/src/lib/System.Data.SQLite.dll -------------------------------------------------------------------------------- /src/tools/nuget.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/shuxinqin/Chloe/109f3b20d0023516cf342a5737c968f197ffaea3/src/tools/nuget.exe --------------------------------------------------------------------------------