Link Search Menu Expand Document

Releases for RepoDb (Core)


View the NuGet package here or download it directly here.

RepoDb (v1.16.0)

Released: TBA

New

  • Added the MultiStatementSeparator property to the IDbSetting interface (and its BaseDbSetting implementation), giving each provider explicit control over the string used to join the individual command texts generated by the QueryMultiple and QueryMultipleAsync operations. It defaults to ";". Providers whose driver rejects a trailing statement terminator on an otherwise-standalone command can override it with their own inter-statement separator so the combined command text remains valid. This groundwork is part of the upcoming IBM Db2 provider support. #1241
  • Added InternalsVisibleTo entries for RepoDb.Db2 and RepoDb.Db2.BulkOperations in the RepoDb.Core project, following the same pattern already used to expose internals to the other provider and bulk-operation packages (RepoDb.SqlServer.BulkOperations, RepoDb.Oracle, RepoDb.Oracle.BulkOperations, RepoDb.PostgreSql.BulkOperations, RepoDb.MySql.BulkOperations, RepoDb.MySqlConnector.BulkOperations). This allows the new, in-progress IBM Db2 provider to reuse RepoDb.Core’s internal implementation details rather than duplicating them. #1241

Breaking

  • Reworked the automatic conversion logic in Converter.ToType<T>(). A null or DBNull scalar result now raises a clearer InvalidCastException naming both the offending value and the target type, unless GlobalConfiguration.Options.ConversionType is set to Automatic, the target is a reference/by-ref type, or the target is System.Object - in those cases the type’s default value is returned instead. The Exists operation now always forces the automatic conversion for its underlying scalar result (returning false when nothing is found), regardless of the global ConversionType setting, since a missing row is a valid outcome rather than a conversion failure. Failed type conversions (e.g. an incompatible value passed to Convert.ChangeType) also now surface as an InvalidCastException with a descriptive message instead of the underlying runtime exception. This impacts the following DbConnection extension operations (sync and async overloads alike):
  • Made the where argument required (removed its default null value) on the Average, BatchQuery, Count, Max, Min, SkipQuery and Sum operations, across the BaseRepository, DbRepository and DbConnection objects and extensions. #1266

Enhancements

  • Set the default value of the order argument to Order.Ascending on the OrderField constructor.
  • Added missing BatchQueryAsync<TEntity>(string tableName, ..., QueryGroup where, ...) overload to DbRepository to match its existing sync counterpart.
  • Added missing SkipQueryAsync<TEntity>(string tableName, ..., QueryGroup where, ...) overload to DbRepository to match its existing sync counterpart. Added missing sync Exists<TWhat>(TWhat what, ...) overload to BaseRepository to match its existing async counterpart.

RepoDb (v1.15.1)

RepoDb (v1.15.0)

RepoDb (v1.14.0)

New

  • Added native PostgreSQL enum type support for bulk operations via the new DataTypeName property on NpgsqlBulkInsertMapItem.
  • Added support for .NET 8, .NET 9, and .NET 10 target frameworks.
  • Added auto-conversion from DateTime to DateOnly. #1154
  • Added full DateOnly support. #1184
  • Added support for int and short in SetEntityIdentities for PostgreSQL. #1197
  • Added Generic Attribute support for ClassHandler. #1169
  • Honor cache expiration from constructor if not passed explicitly. #1180
  • Optimized batch statement generation. #1167
  • Mitigated thread race conditions and hashcode collision risks. #1153
  • Fixed race condition when getting fields by retrying on a new connection. #1162
  • Fixed duplicate type check for StaticType.Byte in ClientTypeToDbTypeResolver. #1213
  • Fixed keepIdentity flag bug in BulkInsert and BulkMerge operations. #1182
  • Fixed nested/concurrent transaction exception when using TransactionScope with PostgreSQL bulk operations. #1159 #1160 #1170
  • Addressed CVE-2023-36414 and CVE-2024-0056. #1207
  • Converted enum to type based on DbType for PostgreSQL. #1152
  • Updated GetCommandText() to use pg_index catalog in PostgreSqlDbHelper. #1209
  • Refreshed README — tightened prose, added a Why RepoDB? section, a Contributors section, and a Downloads badge column to the packages table.

Breaking

  • Dropped support for .NET 6 and .NET 7.

RepoDb (v1.13.1)

RepoDb (v1.13.1-alpha1)

  • Upgraded the Microsoft.Data.SqlClient package v5.1.0.
  • Enabled the net7.0 TFM.

RepoDb (v1.13.0)

Highlights

  • Enhancement: Re-implement the Tracing overall implementations - Addressing the Simplicity and Extensibility #941

Breaking

Non-Breaking

  • Bug: No coercion operator is defined between types System.TimeSpan and System.Int64. #1033
  • Bug: Type with custom mapping used in an array is not mapped to specific DbType #1053
  • Bug: DbRepository’s Truncate operations do not handle transactions #1041
  • Bug: Sort Columns are no longer being verified #1049
  • Enhancement: Explicit selection of the datatype for query parameters #1052
  • Enhancement: Added the DbType as property to both the Parameter and QueryField classes.
  • Enhancement: Removed the type filter (of class) in the ExecuteQueryMultiple operation.
  • Enhancement: Remove the QueryBuilder on the IStatementBuilder interface methods #1055
  • How to use ExecuteQueryMultiple cache? #1044
  • Enhancement: Enable the Anonymous Types and Query Objects on QueryMultiple #1062
  • Enhancement: Add the fields and cacheItemExpiration as arguments to the QueryMultiple operation #1071
  • Enhancement: Enable the TableName invocation in the QueryMultiple operations #1065 Enhancement: Enable the dynamic result from the QueryMultiple operations #1070
  • Enhancement: Support the Type level assignment of PropertyValueAttribute #1059
  • Enhancement: Removed the includeMappings argument from the PropertyInfo.GetPropertyValueAttributes(), PropertyValueAttributeCache and PropertyValueAttributeResolver methods.
  • Enhancement: Introduced the PropertyValueAttributeTypeLevelResolver class.
  • Enhancement: Obsoleted the PropertyValueAttributeResolver class and introduced the replacement class named PropertyValueAttributePropertyLevelResolver class.
  • Request: Insert methods should return the PK regardless of if the PK was generated by the DB or not #1027
  • Enhancement: TypeMapper for MSSQL (Udt and Spatial) #1023
  • Enhancement: Introduce the Async methods to the ICache interface #1080
  • Bug: QueryAsync interfering with PK #1046
  • Question: How does one trace Async methods? #945
  • Introduced the NullToDbNull method into the Converter class.
  • Enhancement: Add a PropertyHandlerOptions and ClassHandlerOptions class #1088
  • Obsoleted the Converter.ConversionType property.
  • Removed the Constant.MaxParametersCount property.
  • Enhancement: Introduce the initialization within the library using an GloalConfigOptions class #1087

  • Enhancement: Add a switch of which value to return (Identity/Primary) during the push operations (Insert, InsertAll, Merge and MergeAll). #1086
  • Enum: writing to db fails, when global-option is automatic or db-field is primary-key #1100
  • Enums: error when dbValue doesn’t exist in Enum-Values #1099
  • Upgraded the Microsoft.Data.SqlClient package to v5.0.1.

RepoDb (v1.13.0-beta1)

RepoDb (v1.13.0-alpha3)

  • Enhancement: Add a switch of which value to return (Identity/Primary) during the push operations (Insert, InsertAll, Merge and MergeAll). #1086 - (Updates to both PostgreSQL, MySQL, SQLite (System/Microsoft) extended libraries)
  • Enum: writing to db fails, when global-option is automatic or db-field is primary-key #1100
  • Enums: error when dbValue doesn’t exist in Enum-Values #1099

RepoDb (v1.13.0-alpha2)

RepoDb (v1.13.0-alpha1)

Highlights

  • Enhancement: Re-implement the Tracing overall implementations - Addressing the Simplicity and Extensibility #941

Breaking

Non-Breaking

  • Bug: No coercion operator is defined between types System.TimeSpan and System.Int64. #1033
  • Bug: Type with custom mapping used in an array is not mapped to specific DbType #1053
  • Bug: DbRepository’s Truncate operations do not handle transactions #1041
  • Bug: Sort Columns are no longer being verified #1049
  • Enhancement: Explicit selection of the datatype for query parameters #1052
  • Enhancement: Added the DbType as property to both the Parameter and QueryField classes.
  • Enhancement: Removed the type filter (of class) in the ExecuteQueryMultiple operation.
  • Enhancement: Remove the QueryBuilder on the IStatementBuilder interface methods #1055
  • How to use ExecuteQueryMultiple cache? #1044
  • Enhancement: Enable the Anonymous Types and Query Objects on QueryMultiple #1062
  • Enhancement: Add the fields and cacheItemExpiration as arguments to the QueryMultiple operation #1071
  • Enhancement: Enable the TableName invocation in the QueryMultiple operations #1065 Enhancement: Enable the dynamic result from the QueryMultiple operations #1070
  • Enhancement: Support the Type level assignment of PropertyValueAttribute #1059
  • Enhancement: Removed the includeMappings argument from the PropertyInfo.GetPropertyValueAttributes(), PropertyValueAttributeCache and PropertyValueAttributeResolver methods.
  • Enhancement: Introduced the PropertyValueAttributeTypeLevelResolver class.
  • Enhancement: Obsoleted the PropertyValueAttributeResolver class and introduced the replacement class named PropertyValueAttributePropertyLevelResolver class.
  • Request: Insert methods should return the PK regardless of if the PK was generated by the DB or not #1027
  • Enhancement: TypeMapper for MSSQL (Udt and Spatial) #1023
  • Enhancement: Introduce the Async methods to the ICache interface #1080
  • Bug: QueryAsync interfering with PK #1046
  • Question: How does one trace Async methods? #945

RepoDb (v.12.10)

  • Bug: the DeleteAll(T entities) method results in System.InvalidOperationException errors [#1011](https://github.com/mikependon/RepoDB/issues/1011)
  • 实体继承基类的主键以及字段,无法在派生类中体现? #986
  • MemoryCache: “Cannot update the item that is not yet expired.” #1017
  • Behavioral Change: When calling the MemoryCache.Add method, the existing cached item (if present) information will be updated by the latest and updated one.
  • Bug: Dot in schema name #1015
  • Deprecated the method DataEntityExtension.GetSchema(string). Use the DataEntityExtension.GetSchema(string, IDbSetting) instead.
  • Deprecated the method DataEntityExtension.GetTableName(string). Use the DataEntityExtension.GetTableName(string, IDbSetting) instead.
  • Deprecated the method Type.GetImplementedInterfaces() (extended method). Use the Type.GetInterfaces() instead.
  • Bug: PropertyHandler doesn’t seem to work in F# #1021
  • Bug: QueryField IN not working with multiple collections with varying sizes #1026
  • Enhancement: Use the HashCode.Combine() method in all Hashcode generations. #1031
  • Upgraded the System.Linq.Async package to v6.1.0.

RepoDb (v1.12.10-beta4)

  • Compiler update to utilize the customized DbParameterExtension class to compliment the compiler’s needs for the NpgsqlParameter.NpgsqlDbType.Unknown.
  • Complimentary support to the Enum(s) for the RepoDb.PostgreSql.BulkOperations package.
  • Upgraded the System.Linq.Async package to v5.1.0.
  • Upgraded the Microsoft.Bcl.AsyncInterfaces package to v6.0.0.

RepoDb (v1.12.10-beta3)

  • (Additional Fixes) Bug: Exceptions are thrown when using a custom PropertyHandler and a Where Expression to process an Enum value (that has NULL or invalid Enum Id); the Get/Set is never invoked. #991
  • Added the Title and PackageTags tags in the Nuget Package (.nuspec references).

RepoDb (v1.12.10-beta2)

  • Question: why to order by a field, it needs to be in the select? #963
  • Bug: Exceptions are thrown when using a custom PropertyHandler and a Where Expression to process an Enum value (that has NULL or invalid Enum Id); the Get/Set is never invoked. #991
  • Supported the .NET v6.0.

RepoDb (v1.12.10-beta1)

  • Initial support to PostgreSQL bulk operations.
  • Code refactoring specifically on the QueryBuilders.

RepoDb (v1.12.9)

  • Enhancement: Make the value argument of the functional QueryField objects to System.Object. #926
  • Question: How is inheritance working in RepoDB? #955

RepoDb (v1.12.8)

  • NETSTANDARD2.0: Added the Microsoft.Bcl.AsyncInterfaces v5.0.0 package.
  • NETSTANDARD2.0: Added the Microsoft.Bcl.HashCode v1.1.1 package.
  • Added the System.Linq.Async v5.0.0 package.
  • Added the net5.0 as part of the target frameworks.
  • Bug: Dynamic insertion via Dictionary<string, object> is failing #791.
  • Bug: IsDictionaryStringObject() does not work in F# #789.
  • Bug: An identify field parameter issue is being thrown when invoking the MergeAll operation dynamically #849.
  • Bug: A SQL syntax issue is being thrown if the BulkMerge is called with multiple qualifiers #850.
  • Bug: Output parameters of type varchar gives Size exception #836.
  • Bug: Calls to any operation throws an object NullReferenceException if not properly initialized. #861.
  • Bug: Different lambdas in QueryAsync generate the same SQL expression (cache problem) #782.
  • (Rebuilt Only) Bug: OrderField ignores MapAttribute #769
  • Bug: OrderField ignores MapAttribute #769
  • Bug: Querying by string field fails in VB .Net #767
  • Bug: Insert exception since 1.1.3 with mysql… #765
  • Enhancement: Added the Size property into the DirectionalQueryField object.
  • Enhancement: Exposed the Type property of the DirectionalQueryField object.
  • Enhancement: Added the NULL comparer as part of the qualifiers on the MergeAll, UpdateAll, BulkMerge and BulkUpdate operations.
  • Enhancement: Made the QueryGroup.GetString() method virtual.
  • Enhancement: Added the QueryField.GetString() method (as virtual).
  • Enhancement: Make the DbRepository.CreateConnection() method virtual. #856
  • Enhancement: Made the CreateConnection() method of the BaseRepository class virtual.
  • Enhancement: Enhancement: Add an additional property on the DbField class that handles the DB Provider. #890
  • Enhancement: Added the PropertyValueAttribute attribute class.
  • Enhancement: Create a base class for the Type Map attributes (NpgsqlTypeMapAttribute, MySqlTypeMapAttribute, MicrosoftSqlServerTypeMapAttribute and SystemSqlServerTypeMapAttribute) #873.
  • Enhancement: Add the attribute-based parameter setters for the DbParameter object. #886
  • Enhancement: Add a mapper for PropertyValueAttribute #887
  • Enhancement: Added the DbTypeAttribute attribute.
  • Enhancement: Added the DirectionAttribute attribute.
  • Enhancement: Added the IsNullableAttribute attribute.
  • Enhancement: Added the NameAttribute attribute.
  • Enhancement: Added the PrecisionAttribute attribute.
  • Enhancement: Added the ScaleAttribute attribute.
  • Enhancement: Added the SizeAttribute attribute.
  • Enhancement: Added the PropertyValueAttributeMapper class.
  • Enhancement: Added the PropertyValueAttributeCache class.
  • Enhancement: Added the PropertyValueAttributeResolver class.
  • Enhancement: Added the PropertyValueAttributes() method on the FluentMapper class.
  • Enhancement: Introduce the formatters for the QueryField class #899

RepoDb (v1.12.8-beta5)

  • NETSTANDARD2.0: Added the Microsoft.Bcl.AsyncInterfaces v5.0.0 package.
  • NETSTANDARD2.0: Added the Microsoft.Bcl.HashCode v1.1.1 package.
  • Added the System.Linq.Async v5.0.0 package.
  • Added the net5.0 as part of the target frameworks.
  • Bug: Dynamic insertion via Dictionary<string, object> is failing #791.
  • Bug: IsDictionaryStringObject() does not work in F# #789.
  • Bug: An identify field parameter issue is being thrown when invoking the MergeAll operation dynamically #849.
  • Bug: A SQL syntax issue is being thrown if the BulkMerge is called with multiple qualifiers #850.
  • Bug: Output parameters of type varchar gives Size exception #836.
  • Bug: Calls to any operation throws an object NullReferenceException if not properly initialized. #861.
  • Enhancement: Added the Size property into the DirectionalQueryField object.
  • Enhancement: Exposed the Type property of the DirectionalQueryField object.
  • Enhancement: Added the NULL comparer as part of the qualifiers on the MergeAll, UpdateAll, BulkMerge and BulkUpdate operations.
  • Enhancement: Made the QueryGroup.GetString() method virtual.
  • Enhancement: Added the QueryField.GetString() method (as virtual).
  • Enhancement: Make the DbRepository.CreateConnection() method virtual. #856
  • Enhancement: Made the CreateConnection() method of the BaseRepository class virtual.
  • Enhancement: Enhancement: Add an additional property on the DbField class that handles the DB Provider. #890
  • Enhancement: Added the PropertyValueAttribute attribute class.
  • Enhancement: Create a base class for the Type Map attributes (NpgsqlTypeMapAttribute, MySqlTypeMapAttribute, MicrosoftSqlServerTypeMapAttribute and SystemSqlServerTypeMapAttribute) #873.
  • Enhancement: Add the attribute-based parameter setters for the DbParameter object. #886
  • Enhancement: Added the DbTypeAttribute attribute.
  • Enhancement: Added the DirectionAttribute attribute.
  • Enhancement: Added the IsNullableAttribute attribute.
  • Enhancement: Added the NameAttribute attribute.
  • Enhancement: Added the PrecisionAttribute attribute.
  • Enhancement: Added the ScaleAttribute attribute.
  • Enhancement: Added the SizeAttribute attribute.
  • Enhancement: Added the PropertyValueAttributeMapper class.
  • Enhancement: Added the PropertyValueAttributeCache class.
  • Enhancement: Added the PropertyValueAttributeResolver class.
  • Enhancement: Added the PropertyValueAttributes() method on the FluentMapper class.
  • Enhancement: Introduce the formatters for the QueryField class #899

RepoDb (v1.12.8-beta4)

  • Bug: Different lambdas in QueryAsync generate the same SQL expression (cache problem) #782.

RepoDb (v1.12.8-beta3)

RepoDb (v1.12.8-beta2)

RepoDb (v1.12.8-beta1)

  • Bug: Insert exception since 1.1.3 with mysql… #765

RepoDb (v1.12.7)

  • Enhancement: Add a Reset() method into the Parameter object. #709
  • Enhancement: Add a method DbParameter into the QueryField object. #711
  • Enhancement: Revisits the Immutable Classes Instantiation #753
  • Bug: Extract function throws exception when using ExecuteQueryMultiple #761
  • Bug: RepoDb.SqlServer Enum picking up 2 types when upgraded from 1.1.1 -> 1.1.2 #736
  • Bug: null reference during fetch #748

RepoDb (v1.12.6)

RepoDb (v1.12.5)

Breaking

Non-Breaking

RepoDb (v1.12.5-beta6)

  • Fixed the related issues found at model-based operation ExecuteQuery (almost related to #666)

RepoDb (v1.12.5-beta5)

Breaking

Non-Breaking

RepoDb (v1.12.5-beta4)

  • Request: Introduce optional caching to ExecuteScalar methods. #648
  • Enhancement: Add the non-parameterized Truncate operation. #652

RepoDb (v1.12.5-beta3)

  • Request: Do not crash if on empty enumerable on bulk operation #635.

RepoDb (v1.12.5-beta2)

RepoDb (v1.12.5-beta1)

RepoDb (v1.12.4)

  • CancellationToken support? #343

RepoDb (v1.12.3)

  • Bug: Behavior change from previous versions prior v1.12.0 #602
  • Bug: Async fetch operations are not using the DbDataReader.ReadAsync method (in v1.12.0 to v1.12.2) #601

RepoDb (v1.12.2)

  • Bug: A NullReferenceException Is Thrown for NULL Query Expression #600

RepoDb (v1.12.1)

  • Enhancement: New Compiler Possible Collision Problem - Refactor the DbDataReader GetHashCode() Generator #597
  • Bug: Unable to share POCOs between different database providers (Sqlite and Postgres) [#595](https://github.com/mikependon/RepoDb/issues/595]

RepoDb (v1.12.0)

  • Complete support to F# programming language as requested by the F# Community. Thank you to Isaac Abraham and Angel Munoz for being so collaborative.
  • Request: F# - Consider the Anonymous Types in the Query and QueryAll operation #536.
  • Bug: QueryAsync with empty QueryField list throws SQL exception #498.
  • Bug: IPropertyHandler not being called #514
  • Bug: Property mapping fails with Turkish locale #502
  • Bug: Non-query statements are not taking into account SQL Server table hints #533.
  • Bug: Async methods use synchronous calls #589
  • Feature: Introduce the ClassHandler Support #524
  • Feature: Support to Enumerable Scalar Values #538 - NEW
  • Request: Completely expose the fields argument in the BatchQuery, Query, Insert, Merge and Update operations (and all its Batch operations). #523
  • Request: Add caching for ExecuteQuery and ExecuteQuery<TEntity> #522
  • Request: Adds an overloaded method for QueryAll<TEntity> operation that takes the tableName parameter. #521 - BREAKING
  • Request: Add caching for ExecuteQuery and ExecuteQuery<TEntity> #522
  • Request: Add the ‘isMoveToNextResult’ argument to the QueryMultipleExtractor (Extract and Scalar) methods #591
  • Request: Support the Immutable Entities #465
  • Question: Question on how to properly configure type mapping for FSharp Option types #483
  • Question: Specific Columns in Query<TEntity> #545
  • Enhancement: Use the Identity field if the Primary field is not available during the Query, Delete and Update operations.
  • Refactoring: Enhance the coding in the Core Compiler #479. BREAKING
  • Enhancement: Complete support to the Fluent named-based operation #499.
  • Enhancement: Replaces the usage of IsNullOrEmpty to IsNullOrWhiteSpace.
  • Enhancement: Replaces the usage of ToLower() to ToLowerInvariant().
  • Enhancement: Replaces the usage of string equality to string.Equals(value1, value2, StringComparer.OrdinalIgnoreCase).
  • Enhancement: Added the Async methods in the compiler. #482 #477
  • Enhancement: Add the dynamic ExecuteQuery method in the DbRepository. #517
  • Enhancement: Renamed the whereOrPrimaryKey argument to what to extend the support to both (data entity object, dynamic/object expression, primary key and identity key), to further support the F# community. BREAKING
  • Enhancement: Updated the QueryGroup.Parse() method to be an argument-typed-based method.
  • Enhancement: Refactored and optimized the Parse method of the QueryField and QueryGroup objects.
  • Enhancement: Refactor the Table-Based Calls to return IEnumerable<ExpandoObject> instead of IEnumerable<dynamics>. #540
  • Enhancement: Consider supporting the execution of the TVP in SQL Server. #566
  • Enhancement: Support for returning IDictionary<string, object> instead of ExpandoObject. #537
  • Enhancement: Re-assess if the IsAssignableFrom can be used over the customized IsInterfacedTo. #469
  • Enhancement: Handle the Exception Handling of the Serialization/Deserialization process of the ClassHandler that is connected to a different Data Entity #539
  • Refactoring: Make all the cacheItemExpiration arguments nullable. BREAKING
  • Refactoring: Make the BaseRepository and DbRepository objects CacheItemExpiration property nullable.
  • Refactoring: Make the CacheItem object CacheItemExpiration property nullable.
  • Test: Added the Integration Tests for the NonKeyedTable.
  • Integration Tests: Added more Integration Tests for the DbType Map Attribute (includes SQL Server, PostgreSQL and MySQL).
  • Added the KeyFieldNotFoundException, MissingQualifierFieldsException and the IdentityFieldNotFoundException.
  • Added the <TEntity>(TableName) methods to the BatchQuery operation.
  • Added the <TEntity>(TableName) methods to the Query and QueryAll operations.
  • Added the <TEntity>(TableName) methods to the Delete and DeleteAll.
  • Added the <TEntity>(TableName) methods to the Insert and InsertAll operations.
  • Added the <TEntity>(TableName) methods to the Merge and MergeAll operations.
  • Added the <TEntity>(TableName) methods to the Update and UpdateAll operations.
  • Added the <TEntity, TResult> methods to the Average and AverageAll.
  • Added the <TEntity, TResult> methods to the Max and MaxAll.
  • Added the <TEntity, TResult> methods to the Min and MinAll.
  • Added the <TEntity, TResult> methods to the Sum and SumAll.
  • Added the execution context provider internal classes for the Insert, Merge, Update, internal class for the InsertAll, MergeAll and UpdateAlloperations.

RepoDb (v1.12.0-beta4)

  • Enhancement: Consider supporting the execution of the TVP in SQL Server. #566
  • Integration Tests: Added more Integration Tests for the DbType Map Attribute (includes SQL Server, PostgreSQL and MySQL).

RepoDb (v1.12.0-beta3)

  • Enhancement: Refactor the Table-Based Calls to return IEnumerable<ExpandoObject> instead of IEnumerable<dynamics>. #540
  • Enhancement: Support for returning IDictionary<string, object> instead of ExpandoObject. #537
  • Enhancement: Re-assess if the IsAssignableFrom can be used over the customized IsInterfacedTo. #469
  • Enhancement: Handle the Exception Handling of the Serialization/Deserialization process of the ClassHandler that is connected to a different Data Entity #539
  • Feature: Support to Enumerable Scalar Values #538 - NEW

RepoDb (v1.12.0-beta2)

  • Enhancement: Updated the QueryGroup.Parse() method to be an argument-typed-based method.
  • Enhancement: Refactored and optimized the Parse method of the QueryField and QueryGroup objects.
  • Bug: Non-query statements are not taking into account SQL Server table hints #533.
  • Request: F# - Consider the Anonymous Types in the Query and QueryAll operation #536.
  • Question: Specific Columns in Query<TEntity> #545

RepoDb (v1.12.0-beta1)

  • Complete support to F# programming language as requested by the F# Community. Thank you to Isaac Abraham and Angel Munoz for being so collaborative.
  • Bug: QueryAsync with empty QueryField list throws SQL exception #498.
  • Bug: IPropertyHandler not being called #514
  • Bug: Property mapping fails with Turkish locale #502
  • Feature: Introduce the ClassHandler Support #524
  • Request: Completely expose the fields argument in the BatchQuery, Query, Insert, Merge and Update operations (and all its Batch operations). #523
  • Request: Add caching for ExecuteQuery and ExecuteQuery<TEntity> #522
  • Request: Adds an overloaded method for QueryAll<TEntity> operation that takes the tableName parameter. #521 - BREAKING
  • Request: Add caching for ExecuteQuery and ExecuteQuery<TEntity> #522
  • Request: Support the Immutable Entities #465
  • Question: Question on how to properly configure type mapping for FSharp Option types #483
  • Enhancement: Use the Identity field if the Primary field is not available during the Query, Delete and Update operations.
  • Refactoring: Enhance the coding in the Core Compiler #479. BREAKING
  • Enhancement: Complete support to the Fluent named-based operation #499.
  • Enhancement: Replaces the usage of IsNullOrEmpty to IsNullOrWhiteSpace.
  • Enhancement: Replaces the usage of ToLower() to ToLowerInvariant().
  • Enhancement: Replaces the usage of string equality to string.Equals(value1, value2, StringComparer.OrdinalIgnoreCase).
  • Enhancement: Added the Async methods in the compiler. #482 #477
  • Enhancement: Add the dynamic ExecuteQuery method in the DbRepository. #517
  • Enhancement: Renamed the whereOrPrimaryKey argument to what to extend the support to both (data entity object, dynamic/object expression, primary key and identity key), to further support the F# community. BREAKING
  • Refactoring: Make all the cacheItemExpiration arguments nullable. BREAKING
  • Refactoring: Make the BaseRepository and DbRepository objects CacheItemExpiration property nullable.
  • Refactoring: Make the CacheItem object CacheItemExpiration property nullable.
  • Test: Added the Integration Tests for the NonKeyedTable.
  • Added the KeyFieldNotFoundException, MissingQualifierFieldsException and the IdentityFieldNotFoundException.
  • Added the <TEntity>(TableName) methods to the BatchQuery operation.
  • Added the <TEntity>(TableName) methods to the Query and QueryAll operations.
  • Added the <TEntity>(TableName) methods to the Delete and DeleteAll.
  • Added the <TEntity>(TableName) methods to the Insert and InsertAll operations.
  • Added the <TEntity>(TableName) methods to the Merge and MergeAll operations.
  • Added the <TEntity>(TableName) methods to the Update and UpdateAll operations.
  • Added the <TEntity, TResult> methods to the Average and AverageAll.
  • Added the <TEntity, TResult> methods to the Max and MaxAll.
  • Added the <TEntity, TResult> methods to the Min and MinAll.
  • Added the <TEntity, TResult> methods to the Sum and SumAll.
  • Added the execution context provider internal classes for the Insert, Merge, Update, internal class for the InsertAll, MergeAll and UpdateAlloperations.

RepoDb (v1.11.6)

  • Code optimizations and XML comments refactoring.
  • Bug: NullReferenceException occurs when InsertAllAsync is executed on Connection that belongs to TransactionScope. #490
  • Bug: Typed UpdateAsync fails for composite key table #493
  • Bug: RepoDB does not seem to work for SQL Server tables with dot in the name #492
  • Enhancement: Remove the SchemaSeparator property from the IDbSetting interface #475
  • Enhancement: Using async DbFieldCache #481
  • Enhancement: Add a SessionId property in the TraceLog class. #484
  • Enhancement: Refactor the usage of Count() and ElementAt().
  • Request: Enable the Enumerable when calling the operations with IN operation. #495
  • Obsolete: Completely removed the PropertyTypeHandlerMapper class.
  • Obsolete: Completely removed the TypeMapper.Map() method.
  • Obsolete: Completely removed the TypeMapper.Unmap() method.
  • Obsolete: Completely removed the TypeMapper.ConversionType property.
  • Added some micro optimizations #476
  • Added a DataEntityReader.Connection property.
  • Added a DataEntityReader.Transaction property.
  • Added a DataEntityReader.Initialize method
  • Added a DataEntityReader.InitializeAsync() method.

RepoDb (v1.11.5)

  • Fixed the problem when installing the library in .NET Framework 4.7.x.
  • Restored the referenced System.ComponentModel.Annotations package to v4.7.0.

RepoDb (v1.11.4)

  • Bug: Table schema is ignored for the identical table names #456
  • Bug: Regression Issue #457
  • Bug: Table Attribute Potential Bug #464
  • Bug?: SqlException: Incorrect syntax near ‘)’ #463
  • Updated the XML documentations of the cache argument for both Query and QueryAll operations.

RepoDb (v1.11.4-beta3)

  • Bug: Table schema is ignored for the identical table names #456
  • Bug: Regression Issue #457
  • Bug: Table Attribute Potential Bug #464
  • Bug?: SqlException: Incorrect syntax near ‘)’ #463
  • Updated the XML documentations of the cache argument for both Query and QueryAll operations.

RepoDb (v1.11.4-beta2)

  • Community Request: Additional fix for #457

RepoDb (v1.11.4-beta1)

  • Bug: Regression Issue #457

RepoDb (v1.11.3)

  • Community Request: Enhancement: Enable Field class to Parse the Expression for Multiple Properties #453
  • Enhancement: Set the return type Field.Parse<T>() to IEnumerable<Field> (instead of Field).
  • Added more Unit Tests on Field class parsing method.
  • Removed the BeforeBulkInsert and AfterBulkInsert from the ITrace interface.
  • Made the CancellableTraceLog class non-sealed, and also, exposed the constructor.
  • Added an overload method for the Merge, MergeAll and UpdateAll operations that accepts the expression for the qualifiers argument.

RepoDb (v1.11.2)

  • Bug: [SQL Server 2019] RepoDB truncates strings of “Text” types #444
  • Request: [SQL Server] Provide better exception message when table mapping is wrong #443

RepoDb (v1.11.1)

  • Bug: The property handler mapping via FluentMapper or PropertyHandlerMapper is not being triggered. #438
  • Requests: Support for Table attribute #360
  • Optimization: Transfer the logic of ClassProperty into various mappers.
  • Optimization: Added an IResolver interface that does not require an input argument.
  • Bug: The property handler mapping via FluentMapper or PropertyHandlerMapper is not being triggered. #438
  • Bug: No coercion operator is defined between types System.String and System.Guid. #437
  • Added an extensive Integration Tests for Property Handler Implicit Mapping.
  • Added an extensive Unit and Integration Tests for Key, Column and Table attributes support. #435
  • Added more Unit Tests for Key/Primary and Table/Column/Map collisions. #435
  • Added the GetTypeMapAttribute(), GetPropertyHandler(), GetPropertyHandlerAttribute() methods in the ClassProperty class.
  • Added the PrimaryResolver to resolve the primary ClassProperty of the data entity type.
  • Added the IdentityResolver to resolve the identity ClassProperty of the data entity type.
  • Added the ClassMappedNameResolver to resolve the database object name mapping of the data entity type.
  • Added the PropertyMappedNameResolver to resolve the cached column name mappings of the property.
  • Added both the TypeMapPropertyLevelResolver and TypeMapTypeLevelResolver classes to resolve the equivalent DbType object of both the property and .NET CLR type.
  • Added both the PropertyHandlerPropertyLevelResolver and PropertyHandlerTypeLevelResolver classes to resolve the equivalent property handler of both the property and .NET CLR type.
  • Added the entityType argument in the DbCommandExtensions.CreateParameters() method.

RepoDb (v1.11.1-beta3)

  • Added the entityType argument in the DbCommandExtensions.CreateParameters() method.

RepoDb (v1.11.1-beta2)

  • Requests: Support for Table attribute #360
  • Bug: The property handler mapping via FluentMapper or PropertyHandlerMapper is not being triggered. #438
  • Bug: No coercion operator is defined between types System.String and System.Guid. #437
  • Added an extensive Unit and Integration Tests for Key, Column and Table attributes support. #435
  • Added more Unit Tests for Key/Primary and Table/Column/Map collisions. #435
  • Added the GetTypeMapAttribute(), GetPropertyHandler(), GetPropertyHandlerAttribute() methods in the ClassProperty class.
  • Optimization: Transfer the logic of ClassProperty into various mappers.
  • Optimization: Added an IResolver interface that does not require an input argument.
  • Added the PrimaryResolver to resolve the primary ClassProperty of the data entity type.
  • Added the IdentityResolver to resolve the identity ClassProperty of the data entity type.
  • Added the ClassMappedNameResolver to resolve the database object name mapping of the data entity type.
  • Added the PropertyMappedNameResolver to resolve the cached column name mappings of the property.
  • Added both the TypeMapPropertyLevelResolver and TypeMapTypeLevelResolver classes to resolve the equivalent DbType object of both the property and .NET CLR type.
  • Added both the PropertyHandlerPropertyLevelResolver and PropertyHandlerTypeLevelResolver classes to resolve the equivalent property handler of both the property and .NET CLR type.

RepoDb (v1.11.1-beta1)

RepoDb (v1.11.0)

RepoDb (v1.11.0-beta4)

All packages are affected:

  • Bug: (Direct Reports) Fixed the issue at DeleteAll() via primary keys if the items is beyond 2100.
  • Performance: Reverted the value of Constant.DefaultBatchOperationSize into 10.

RepoDb (v1.11.0-beta3)

RepoDb (v1.11.0-beta2)

RepoDb (v1.11.0-beta1)

RepoDb (v1.11.0-alpha1):

RepoDb (v1.10.11):

RepoDb (v1.10.11-beta3):

RepoDb (v1.10.11-beta2):

RepoDb (v1.10.11-beta1):

  • At the CancellableTraceLog.Cancel() method, the throwException argument has been defaulted the true.
  • Bug: Calling to DeleteAll operation with the list of PrimaryKeys and Transaction object is failing. Reported by Christian Franck. #404.

RepoDb (v1.10.10)

  • Features: Full support to Bulk Operations (BulkDelete, BulkInsert, BulkMerge and BulkUpdate).
  • Enhancement: AsFieldsAsAliasFields - added left and right aliases.
  • Enhancement: XML Documentation updates for the SQL statement Builders.
  • Enhancement: Add a Type extended method named IsNullable.
  • Bug: Solve the intermittent NullReferenceException when calling the Batch Operations (i.e.: InsertAll, MergeAll, UpdateAll). #392
  • Bug: The property handlers mapped via PropertyHandlerMapper is failing if both NULLABLE and NON-NULLABLE property types are present in the class. #394

RepoDb (v1.10.10-beta1)

RepoDb (v1.10.9)

  • Enhancement: Compiler changes for ClassProperty.GetDbType() calls.
  • Feature: Support for SqlServer.SqlDbType (Microsoft and System), PostgreSql.NpgsqlDbType #390 and MySql.MySqlDbType.

RepoDb (v1.10.8)

  • Bug: InvalidCastException Converting Enums to Strings in Postgres #388

RepoDb (v1.10.7)

  • Enhancement: Separate the Bulk operations into a separate Solution and Nuget Package. #385
  • Enhancement: Separete all SqlServer related stuffs to a different library named RepoDb.SqlServer. #282
  • Enhancement: Remove the support to System.Data.SqlClient in the RepoDb.Core. #386

RepoDb (v1.10.6)

  • Added the class property as an argument context in the Get() and Set() method.
  • Exposed the underlying DbRepository property at the [BaseRepository](/class/baserepository) object.

RepoDb (v1.10.5)

Highlights

Others

RepoDb (v1.10.4)

  • Initial support of RepoDb.PostgreSql.
  • Added IsPreparable Property for IDbSetting.
  • Removed the basedOnFields logic when extracting the DbDataReader.
  • InsertAll: Parsed the first entity property fields if the fields argument is not defined.
  • Enhancement: Introduce the BaseDbSetting class to cater a uniform HashCode generator. #369
  • Adhoc: Sealed and exposed the DbSettings, DbHelpers and the DbStatementBuilders classes.
  • Enhancement: Introduced the DbConvertFieldResolver as the base converter field.

RepoDb (v1.10.4-beta2)

  • Initial support of RepoDb.PostgreSql.

RepoDb (v1.10.4-beta1)

  • Error: Invalid expression. The property Id is not defined on a target type #364 - MySql Support.

RepoDb (v1.10.3)

RepoDb (v1.10.2)

  • Bug (Community Request): The primary field is not found exception when primary key column name is different from Primary attribute property name is different while Connection.Update is called. #356
  • Bug: Set the return value of Max and Min operations to object. #357
  • Performance: Refactor to remove the recurrent calls to DbFieldCache.Get() in the ExecuteQuery method.

RepoDb (v1.10.2-alpha2)

  • Bug: Set the return value of Max and Min operations to object. #357
  • Refactor to remove the recurrent calls to DbFieldCache.Get() in the ExecuteQuery method.

RepoDb (v1.10.2-alpha1)

  • Bug (Community Request): The primary field is not found exception when primary key column name is different from Primary attribute property name is different while Connection.Update is called. #356

RepoDb (v1.10.1)

  • Removed the NetFramework Specific Library at Nuget.
  • Supported the RepoDb.MySql extended library.

RepoDb (v1.10.0)

  • Breaking changes from the previous versions.
  • This release contains major code refactoring for performance optimization purposes.
  • Feature: Introduced the support IDbSetting. Used for other data providers extensibility complete support.
  • Feature: Introduced DbSettingMapper class.
  • Feature: Supported Upsert operations (abstracted with Merge operation) for the data providers that does not support multi-statement execution and MERGE command.
  • Feature: Added support to Average and AverageAll (with its Async version).
  • Feature: Added support to Exists (with its Async version).
  • Feature: Added support to Max and MaxAll (with its Async version).
  • Feature: Added support to Min and MinAll (with its Async version).
  • Feature: Added support to Sum and SumAll (with its Async version).
  • Feature: Create an extended method DbConnection.GetLastInsertedIdentity() for other data providers extensibility complete support.
  • Enhancement: Introduced [QueryGroup](/class/querygroup).IsForUpdate() method.
  • Enhancement: Splitted the SqlServerStatementBuilder to a BaseStatementBuilder. Further supports for other data providers base statement building.
  • Enhancement: Supported IResolver for 7 generic types.
  • Refactoring: Renamed the SqlDbHelper to SqlServerDbHelper.
  • Refactoring: Renamed the SqlStatementBuilder to SqlServerStatementBuilder.
  • Test: Added an extensive Unit/Integration Tests for Average, Exists, Max, Min, Sum (and all its Async operations).
  • Test: Added an extensive Unit Tests for [QueryGroup](/class/querygroup).GetString() and QueryField.GetString().
  • Bug: Where expression using IEnumerable`s contains throws error when using inherited class property #301

RepoDb (v1.9.11)

  • Stable release.
  • Enhancement: Check current transaction (System.Transactions.Transaction.Current) before applying an explicit System.Data.IDbTransaction object. #279
  • Enhancement: Table Hints is not passing properly in the BatchQuery. #283

RepoDb (v1.9.10)

  • Stable release.
  • v1.9.9 changes + more Integration Tests for DbConnection.

RepoDb (v1.9.9)

  • Bug: SqlException: Login failed for user xxx
  • Bug: Calling InsertAll with MapAttribute leads to System.NullReferenceException: Object reference not set to an instance of an object. #274
  • Bug: SqlDbHelper.GetFields is failing if the transaction object is present. #278
  • Enhancement: Remove database streaming when extracting table schema.
  • Enhancement: Add AsFields() extended methods for the IEnumerable of DbField objects #273
  • Enhancement: Add DbFieldCache.GetAsync method. #275
  • Enhancement: Add DataEntityDataReader into BulkInsert that accepts TableName and Entities #271
  • Enhancement: Add AsFields() extended methods for the IEnumerable of DbField objects.
  • To Consider: Enable BulkInsert with System.DataTable #277
  • Test: Add IntegrationTests on BulkInsert that accepts DataEntities and TableName.
  • Refactoring: Refactor the code snippets for DbFieldCache to accept IDbTransaction objects. These affected too many chain of calls.
  • Refactoring: Removed the ToLower() and replaced by StringComparer.OrdinalIgnoreCase.

RepoDb (v1.9.9-beta5)

  • Bug: SqlDbHelper.GetFields is failing if the transaction object is present. #278
  • Refactoring: Refactor the code snippets for DbFieldCache to accept IDbTransaction objects. These affected too many chain of calls.

RepoDb (v1.9.9-beta4)

  • To Consider: Enable BulkInsert with System.DataTable #277
  • v1.9.9 release candidate

RepoDb (v1.9.9-beta3)

  • Enhancement: Add DbFieldCache.GetAsync method. #275
  • Enhancement: Add DataEntityDataReader into BulkInsert that accepts TableName and Entities #271
  • Enhancement: Add AsFields() extended methods for the IEnumerable<DbField>
  • Test: Add IntegrationTests on BulkInsert that accepts DataEntities and TableName.

RepoDb (v1.9.9-beta2)

  • Enhancement: Add AsFields() extended methods for the IEnumerable<DbField> #273
  • Bug: Calling InsertAll with MapAttribute leads to System.NullReferenceException: Object reference not set to an instance of an object. #274

RepoDb (v1.9.9-beta1)

  • Bug: SqlException: Login failed for user xxx
  • Enhancement: Remove database streaming when extracting table schema.

RepoDb (v1.9.8)

  • Stable release of RepoDb.
  • Enum Supports.
  • Unorganized Table/Column Supports.
  • Bug Fixes.

RepoDb (v1.9.8-beta4)

  • Title: A production-ready data access platform for .NET applications.
  • Fix: Fixed the issue in the [QueryGroup](/class/querygroup).Fix() method if the depth of the Tree is at Level 4.

RepoDb (v1.9.8-beta3)

  • Fixed: Fixed the issue when using the Mapped/Quoted/Unorganized property in [QueryGroup](/class/querygroup).Parse() method.

RepoDb (v1.9.8-beta2)

  • Fixed: Failing operations on a purposely quoted class property. Reported by Christian Franck.

RepoDb (v1.9.8-beta1)

  • Requested: Document Enum Support #261
  • Bug: Operations are failing on the Unorganized Table - by Christian Franck #262

RepoDb (v1.9.7)

  • Stable release with complete feature sets.
  • Added netstandard2.0 as the default target framework at Nuget Package.

RepoDb (v1.9.6)

  • [Note] This version is the first ever version release with complete features. The next version will be only be bug-fixes from this version (if we found some).
  • [Core] Optimize the Expression field iteration between the number of Class properties and DbDataReader columns. #136
  • [Core] Add a pluggable interface/abstract for DbProviderOperation #158
  • [Core] Add a DbTransaction object on InsertAll, MergeAll, UpdateAll operations. #213
  • [Test] Added an Integration Tests for IdentityClassWithDifferentIdentity.
  • [Test] Add IntegrationTest for UpdateAll targeting certain columns. #245
  • [Test] Add an Async method support to QueryMultipleExtractor.Extract. #255
  • [Test] Add an Async method support to QueryMultipleExtractor.Scalar. #256
  • [Test] Introduce UnitTest for IDbOperationProvider Interface. #253
  • [Test] Create a test for IStatementBuilder for all Async operations for DbConnection, DbRepository, BaseRepository. #218
  • [Test] Add more extensive UnitTest for IN, NOT IN, BETWEEN, NOT BETWEEN, LIKE and NOT LIKE operations. #186
  • [Test] Create a much more extensive UnitTests for all Operations (Equal, NotEqual, Between … ) #178
  • [Test] Create an extensive IntegrationTests for IN, NOT IN, BETWEEN, NOT BETWEEN, LIKE and NOT LIKE operations. #180
  • [Test] Create IntegrationTest for DbTransaction (Insert, Merge, Delete, Update) #181
  • [Added] Introduce SqlDbOperationProvider Class. #251
  • [Added] Introduce DbOperationProviderMapper Class. #252
  • [Added] Introduce IDbOperationProvider Interface. #250
  • [Adhoc] Add BatchSize in BulkInsert. #257
  • [Adhoc] Remove all obsolete methods for v1.9.6. #246
  • [Minor] Hide the exposed extended internal methods. #244

RepoDb (v1.9.5)

  • [Note] This version is the first ever version release with complete features. The next version will be only be bug-fixes from this version (if we found some).
  • [Core] Introduce UpdateMultiple, different from UpdateAll. #94
  • [Core] Introduce the UpdateAll via PrimaryKey. #93
  • [Core] Introduce Query and QueryAsync Table-Based Calls #176
  • [Core] Introduce QueryAll and QueryAllAsync Table-Based Calls #221
  • [Core] Introduce BatchQuery, BatchQueryAsync Table-Based Calls #175
  • [Core] Create an IL and Compiled Expressions for Update, Merge, Insert and InsertAll Parameter Passing #197
  • [Core] Introduce the InsertMultiple, different from InsertAll. #92
  • [Core] Add ExecutionContext Cache for Insert. #205
  • [Core] Add ExecutionContext Cache for Merge. #206
  • [Core] Add ExecutionContext Cache for Update. #208
  • [Core] Add ExecutionContext Cache for UpdateAll. #209
  • [Core] Add ExecutionContext Cache for MergeAll. #207
  • [Core] Re-enable the operation for Updatevia DataEntity object. #188
  • [Performance] Create a cached Expression when setting back the PrimaryKey values in Insert and InsertAll. #211
  • [Test] Add extensive IntegrationTests for type CRUD via TableName Calls. #222
  • [Test] Insert via TableName using Dynamic object with Invalid Column Casing #223
  • [Test] Add more IntegrationTest for UpdateAll. #231
  • [Test] Add UnitTest for MergeAll ITrace object. #240
  • [Test] Added more extensive IntegrationTests for MergeAll operation. #242
  • [Test] Add UnitTest for UpdateAll (IStatementBuilder, ITrace, QueryBuilder) #230
  • [Test] Add UnitTest for InsertAll. #214
  • [Bug] The version 1.9.2 is an (untagged) pre-release version. The Id property is failing on Insert if the Data Type is not long #215
  • [Bug] Insert via TableName using Dynamic object with Invalid Column Casing #223
  • [Bug] [Core] Insert is failing for non-null (non-table) properties (XJNEN) #212
  • [Bug] DbHelper: Script execution security related issue in the company (XJNEN) #229
  • [Bug] Expression based using the ToList().Contains() is failing. But the ToArray().Contains() is working. XJNEN #233
  • [Known-Bug] Error is thrown when calling the UpdateAll with dynamic entities (and the fields are not equals to the DB fields) and the qualifiers were not defined. #232
  • [Adhoc] Call the AsList() method when calling the [QueryGroup](/class/querygroup).GetString() method. Support the case of XJNEN #228
  • [Adhoc] Reviewed BaseRepository, DbRepository, DbConnection Async/Await Keywords
  • [Adhoc] Reviewed UnitTests for the ITrace (BaseRepository, DbRepository, DbConnection)
  • [Adhoc] Convert all Mappers to become a Resolvers by implementing the IResolver interface. #227
  • [Adhoc] Remove all MapItem Classes from the Mappers. #226
  • [Removed] TypeMapItem Class
  • [Removed] DbIdentityCache Class

RepoDb (v1.9.4)

  • [Note] This version is the first ever version release with complete features. The next version will be only be bug-fixes from this version (if we found some).
  • [Core] Introduce UpdateMultiple, different from UpdateAll. #94
  • [Core] Introduce the UpdateAll via PrimaryKey. #93
  • [Core] Introduce Query and QueryAsync Table-Based Calls #176
  • [Core] Introduce QueryAll and QueryAllAsync Table-Based Calls #221
  • [Core] Introduce BatchQuery, BatchQueryAsync Table-Based Calls #175
  • [Core] Create an IL and Compiled Expressions for Update, Merge, Insert and InsertAll Parameter Passing #197
  • [Core] Introduce the InsertMultiple, different from InsertAll. #92
  • [Core] Add ExecutionContext Cache for Insert. #205
  • [Core] Add ExecutionContext Cache for Merge. #206
  • [Core] Add ExecutionContext Cache for Update. #208
  • [Core] Add ExecutionContext Cache for UpdateAll. #209
  • [Core] Add ExecutionContext Cache for MergeAll. #207
  • [Core] Re-enable the operation for Update via DataEntity object. #188
  • [Performance] Create a cached Expression when setting back the PrimaryKey values in Insert and InsertAll. #211
  • [Test] Add extensive IntegrationTests for type CRUD via TableName Calls. #222
  • [Test] Insert via TableName using Dynamic object with Invalid Column Casing #223
  • [Test] Add more IntegrationTest for UpdateAll. #231
  • [Test] Add UnitTest for MergeAll ITrace object. #240
  • [Test] Added more extensive IntegrationTests for MergeAll operation. #242
  • [Test] Add UnitTest for UpdateAll (IStatementBuilder, ITrace, QueryBuilder) #230
  • [Test] Add UnitTest for InsertAll. #214
  • [Bug] The version 1.9.2 is an (untagged) pre-release version. The Id property is failing on Insert if the Data Type is not long #215
  • [Bug] Insert via TableName using Dynamic object with Invalid Column Casing #223
  • [Bug] [Core] Insert is failing for non-null (non-table) properties (XJNEN) #212
  • [Bug] DbHelper: Script execution security related issue in the company (XJNEN) #229
  • [Bug] Expression based using the ToList().Contains() is failing. But the ToArray().Contains() is working. XJNEN #233
  • [Adhoc] Call the AsList() method when calling the [QueryGroup](/class/querygroup).GetString() method. Support the case of XJNEN #228
  • [Adhoc] Reviewed BaseRepository, DbRepository, DbConnection Async/Await Keywords
  • [Adhoc] Reviewed UnitTests for the ITrace (BaseRepository, DbRepository, DbConnection)
  • [Adhoc] Convert all Mappers to become a Resolvers by implementing the IResolver interface. #227
  • [Adhoc] Remove all MapItem Classes from the Mappers. #226
  • [Removed] TypeMapItem Class
  • [Removed] DbIdentityCache Class

RepoDb (v1.9.3)

  • [Core] Introduce ExecutionContext to hold the caching of the execution for InsertAll. #204
  • [Enhancement, Performance] InsertAll Compiled Expressions
  • [Enhancement] Revisits the DbField for Primary and Identity Columns. #182
  • [Enhancement] Add the IdentityDbField in both Merge and Update SqlStatementBuilder. #198
  • [Enhancement] Rename the DataReaderConverter to DataReader. #200
  • [Enhancement] Add Flush method in the CommandTextCache, and exposed the class. #220
  • [Performance] Create a cached Expression when setting back the PrimaryKey values in Insert and InsertAll. #211
  • [Performance] Use the compiled function for inserting single DataEntity if the BatchSize is 1 for InsertAll. #217
  • [Fixed] Remove the Insert and InsertAll identity conversion from SQL. #203 - Fixed by introducing the ConversionResolver classes.
  • [Test] Create UnitTests for (DbConnection, DbRepository, BaseRepository) InsertAll operation for IStatementBuilder. #216
  • [Test] Add UnitTests for ClientTypeToSqlDbTypeResolver, SqlDbTypeNameToClientTypeResolver and SqlDbTypeToStringNameResolver #219
  • [Added] IConversionResolver
  • [Added] ClientTypeToSqlDbTypeResolver
  • [Added] SqlDbTypeNameToClientTypeResolver
  • [Added] SqlDbTypeToStringNameResolver
  • [Added] SqlVariant
  • [Added] ParameterField
  • [Added] InsertExecutionContext
  • [Added] InsertExecutionContextCache
  • [Added] InsertAllExecutionContext
  • [Added] InsertAllExecutionContextCache

RepoDb (v1.9.2)

  • [Core] Introduce the InsertAll, different from InsertMultiple. #91
  • [Core] Return the number of affected rows during BulkInsert for DbDataReader. #192
  • [Core] Add a SetParameters extended methods for DbCommand object. #196
  • [Core, Requested] Re-enable the operation for Deletevia DataEntity object. #185
  • [Core, Requested] Re-enable the operation for Updatevia DataEntity object. #188
  • [Core, Requested] Add support to exclude non-table Class Properties in all Operations. #189
  • [Adhoc, Requested] Expose the DataEntityDataReader Class. #172
  • [Adhoc, Requested] Expose the [QueryGroup](/class/querygroup).Fix() method. #179
  • [Adhoc] Revisit the async Task in all DbRepository methods. #190
  • [Adhoc] Add a new repository method named EnsureOpenAsync. #111
  • [Test] Add an extensive IntegrationTests for the Entity with Extra Fields. #183
  • [Test] Add all UnitTests for Trace call for all Async operations. #193
  • [Test] Add UnitTest for InsertAll. #194
  • [Test] Add IntegrationTests for InsertAll. #195
  • [Test] Add more extensive UnitTest for IN, NOT IN, BETWEEN, NOT BETWEEN, LIKE and NOT LIKE operations. #186
  • [Test] Add extensive IntegrationTests for ConnectionPersistency. #191
  • [Enhancement] Auto-set the PrimaryField value of the object after calling the Insert<T> operation. #187

RepoDb (v1.9.1)

  • Stable Release of RepoDb.
  • [Update] Exposed BulkCopyOptions and Transaction to BulkInsert Operation.

RepoDb (v1.9.0)

  • [Core] Introduced table-based operations for Count, [CountAll](/operation/countall), Delete, DeleteAll, Insert, Merge, [Truncate](/operation/truncate) and Update.
  • [Core] Introduced [CountAll](/operation/countall) and QueryAll operations.
  • [Core] Introduced pluggable interface DbHelpers.
  • [Core] Updated the QueryBuilder to remove the TEntity at class level (moved it to method level).
  • [Core] Updated the StatementBuilder SQL Text generation via TableName.
  • [Core] Supported Dynamic, ExpandoObject, IDictionary<string, object>, QueryField, IEnumerable<QueryField> and [QueryGroup](/class/querygroup) objects in the Execute<Method> calls.
  • [Added] ExecuteScalar<T> and ExecuteScalarAsync<T>
  • [Added] DbField
  • [Added] DbFieldCache
  • [Removed] AsyncResultExtractor
  • [Removed] StatementBuilderMapItem
  • [Removed] FieldDefinition
  • [Removed] FieldDefinitionCache
  • [Renamed] SqlHelper to SqlDbHelper
  • [Renamed] PrimaryKeyCache to PrimaryCache.
  • [Renamed] PrimaryKeyIdentityCache to PrimaryIdentityCache
  • [Optimization] CountAsync operation is now returning the Task<int> type instead of Task<object>.
  • [Optimization] Allow passing of cache expiration time during Query and QueryAll calls.
  • [Optimization, Pull-Request] Enumerations Order, Conjunction and Operation is now a pre-generated int values.
  • Introduced complete sets of IntegrationTests and UnitTests in all of the changes mentioned above.
  • See v1.9.0-beta1 and v1.9.0-beta2 for complete set of changes.

RepoDb (v1.9.0-beta2)

  • [Core] Make the DbHelper Pluggable by Provider. #137
  • [Core] [NTH]: Support InlineDelete(string tableName, object where ...) #113 – Moved to Delete
  • [Core] Add table based operations for Count, Delete, DeleteAll, Insert, Merge, Truncate, Update. #159
  • [Core] Organize the ordering of the arguments in all operations. #160
  • [Core] Introduce CountAll operation. #161
  • [Enhancement] Revisits the NET Framework custom method for GetCustomAttributes. [#133](https://github.com/mikependon/RepoDb/issues/133)
  • [Enhancement] Support passing of QueryGroup, QueryField, IEnumerable in the Execution Operations [#140](https://github.com/mikependon/RepoDb/issues/140)
  • [Enhancement] Remove the StatementBuilderMapItem class if possible. #139
  • [Enhancement] Remove the Provider Enumeration. #138
  • [Enhancement] Reorder the parameter of for target table to BulkInsert(TableName, DbDataReader). #145
  • [Enhancement] Properly parse the type of the passed parameters when parsing the RawSql Array Parameters. #147
  • [Enhancement] [NTH]: Support InlineInsert(string tableName, object param …) #114 – Moved to Insert
  • [Enhancement] Implement the prefix as a passable argument when during conversion. #148
  • [Enhancement] Add additional argument in the DataReaderConverter.ToEnumerable method to support the calls to DbHelper.Get method. [#142](https://github.com/mikependon/RepoDb/issues/142)
  • [Enhancement] Add a caching mechanism for type Field objects. #157
  • [Enhancement] Merge all inline operations into main operations (InlineMerge should be Merge). #156
  • [Adhoc] Created a new cache class named DbIdentityCache.
  • [Adhoc] Renamed the FieldDefinition into DbField.
  • [Adhoc] Renamed the FieldDefinitionCache to DbFieldCache.
  • [Adhoc] Renamed the SqlHelper to SqlDbHelper.
  • [Adhoc] Renamed the PrimaryKeyCache to PrimaryCache.
  • [Adhoc] Renamed the PrimaryKeyIdentityCache to PrimaryIdentityCache.
  • [Adhoc] Moved the DbHelpers into RepoDb.DbHelpers`.
  • [Adhoc, Optimization] Made the DbFieldCache object more dynamic to any DB providers.
  • [Test] Add additional logic in the Integration Tests of the IStatementBuilder, verify that the second call is not hitting the method. #141
  • [Test] Add an extensive Unit/Integration Test for InlineInsert that targets a table name. #146
  • [Test] Create UnitTests for CountAll. #163
  • [Test] Add separate IntegrationTests for the RawSql ArrayValues #168
  • [Test] Add separate IntegrationTests for different Execute parameters. [#169](https://github.com/mikependon/RepoDb/issues/169)
  • [Test] Create IntegrationTests for QueryAll. #167
  • [Test] Create IntegrationTests for CountAll. #164
  • [Documentation] Document the CountAll operation. #162
  • [Documentation] Add a separate documentation entry for Execute with Array parameters argument. [#143](https://github.com/mikependon/RepoDb/issues/143)

RepoDb (v1.9.0-beta1)

  • [New] Updated the description to “A dynamic, lightweight, efficient and very fast Hybrid ORM library for .NET.”.
  • [New] Re-instate the row deletion by entity level (connection.Delete(T entity)) [#112](https://github.com/mikependon/RepoDb/issues/112)
  • [Bug] Query using Expression is failing for Contains() == false #102
  • [Test] Create an Integration Tests for a model with much columns that the result of the ExecuteQuery #103
  • [Test] Add Integration Tests for Execute with IDictionary and ExpandoObject parameters. [#123](https://github.com/mikependon/RepoDb/issues/123)
  • [Test] Add an intensive UnitTests for Cache ExpirationInMinutes in the DbConnection, DbRepository and BaseRepository. #129
  • [Test] Add major Integration Tests for Caching for SqlConnection, DbRepository, BaseRepository. #130
  • [Test] Add IntegrationTests for Insert<TEntity, TResult> and InlineInsert<TEntity, TResult> #132
  • [Enhancement, Major] Remove the TEntity in QueryBuilder, implement it like this QueryBuilder (instead of QueryBuilder) [#115](https://github.com/mikependon/RepoDb/issues/115)
  • [Enhancement, Major] Remove the AsyncResultExtractor class. #124
  • [Enhancement] Short datatype used for Enums #107
  • [Enhancement] Remove the internal StringConstants class. #117
  • [Enhancement] Make the CountAsync operation return type long instead of object without affecting the parallelism. #108
  • [Enhancement] Add a new operational method ExecuteScalar (and ExecuteScalarAsync). [#121](https://github.com/mikependon/RepoDb/issues/121)
  • [Enhancement] Support passing of IDictionary<string, object> as param in the Execute operation. [#125](https://github.com/mikependon/RepoDb/issues/125)
  • [Enhancement] Allow passing of cache expiration time during creation and in the repository. #128

RepoDb (v1.8.4)

  • Stable Spring Release of RepoDb. Enjoy!

RepoDb (v1.8.3)

  • Stable Spring Release of RepoDb. Enjoy!

RepoDb (v1.8.2)

Updates

  • Updated to again support the BatchQuery dynamic expression (first-level properties).
  • Updated to again support the Count dynamic expression (first-level properties).
  • Updated to again support the whereOrPrimaryKey argument rather than primaryKey (first-level properties).

Added

  • Additional Integration Tests for class/object mappings (CRUD).
  • Additional Integration Tests for the Dynamics and Expressions query expression for DbConnection, DbRepository and [BaseRepository](/class/baserepository).

RepoDb (v1.8.1)

New Features

Optimizations

  • Optimization: Added a class-level checking when identifying the PrimaryKey of a class.
  • Optimization: Supported the type conversions(if convertible) when querying the data from the database.
  • Optimization: Simplified the extraction of the result of the ExecuteQueryMultiple via Extract() method.

Added

  • Added: A class named AsyncResultExtractor to control the extraction of the result in the caller side for all Async methods of the [BaseRepository](/class/baserepository)/DbRepository.
  • Added: A class named QueryMultipleRequest to handle the request when calling the QueryMultiple operation.
  • Added: A class named CommandArrayParameter to hold the array parameters for Raw SQL statements.
  • Added: A method named Reset for both QueryField and [QueryGroup](/class/querygroup) objects allow the user to reinstate the instance of that object.
  • Added: An operation named BulkInsert at DbRepository with DbDataReader as the parameter.
  • Added: An argument named hints for both the BatchQuery and Count operation.
  • Added: An intensive IntegrationTests for all the different data types of the database (SQL Server) (Numbers, Spatials, Strings, Dates, Bytes, Others).
  • Added: An intensive IntegrationTests for the data types conversions(i.e: String-to-Numbers (vice versa), String-to-Dates (vice versa), etc).
  • Added: An intensive IntegrationTests for the invalid casings.
  • Added: An intensive IntegrationTests for all the operations of the DbConnection, DbRepository and [BaseRepository](/class/baserepository) objects.

Fixes

  • Fixed: An issue in the InlineMerge if the primary key is not defined in the dynamic object.
  • Fixed: An issue in the Merge if the primary key is an identity.
  • Fixed: An issue in the QueryMultiple if the same expression is are used multiple times.

RepoDb (v1.8.1-beta1)

New Features

Added

  • In the Async methods, introduced the AsyncResultExtractor class to control the extraction of the result in the caller side.
  • Supported BulkInsert for DbRepository with DbDataReader as the parameter.
  • Added an IntegrationTests for all the different data types of the database (SQL Server) (Numbers, Spatials, Strings, Dates, Bytes, Others).
  • Added an IntegrationTests for the data types conversions(i.e: String-to-Numbers (vice versa), String-to-Dates (vice versa), etc).
  • Added an IntegrationTests for the invalid casings.

Optimizations

  • Added a class-level checking when identifying the PrimaryKey of a class.
  • Supported the type conversions(if convertible) when querying the data from the database.

Todo for 1.8.1

  • Complete sets of IntegrationTests for DbConnection, DbRepository, BaseRepository operations.
  • The version 1.8.1 will be the highest production-grade release of the library.

RepoDb (v1.8.0)

New Features

  • Introduced the support for DbConnection.QueryMultiple.
  • Introduced the support for DbConnection.ExecuteQueryMultiple.

Added

  • Added a class QueryMultipleExtractor to manage the extraction of the result of DbConnection.ExecuteQueryMultiple operation.
  • Added a class named CommandParameter to handle the value of the parameter mapping into the target Type.
  • Added a class named QueryGroupTimeMap to support the mapping of the QueryGroup into the Type.
  • Introduced a hints argument in the DbConnection.Query operation.
  • Added class SqlTableHints.
  • Supported BulkInsert for DbDataReader.

Removed

  • Removed the Operation.Any.
  • Removed the Operation.All.
  • Removed the orderBy and top argument in the Query method with primaryKey argument.
  • Removed the DbConnection.BatchQuery method with primaryKey argument.
  • Removed the DbConnection.Count method with primaryKey argument.
  • Removed the DbConnection.Delete method without the WHERE parameter.
  • Removed the support on dynamic object query tree expressions.

Discontinued

  • Removed the attribute Command.
  • Removed the attribute Ignored.

Optimizations

  • Revisits the way on how to map the [QueryGroup](/class/querygroup) list of QueryField into the data entity type.
  • Refactor the Linq (IEnumerable.ToList()) into an old-school (foreach / for (var i..)) approach.

RepoDb (v1.8.0-beta5)

  • (Major Update) Introduced the support for DbConnection.QueryMultiple.
  • (Major Update) Introduced the support for DbConnection.ExecuteQueryMultiple.
  • Added class QueryMultipleExtractor.

RepoDb (v1.8.0-beta4)

  • Introduced a hints argument in the DbConnection.Query operation.
  • Added class SqlTableHints.

RepoDb (v1.8.0-beta3)

RepoDb (v1.8.0-beta2)

  • Removed the orderBy and top argument in the Query method with primaryKey argument.
  • Removed the DbConnection.BatchQuery method with primaryKey argument.
  • Removed the DbConnection.Count method with primaryKey argument.
  • Removed the DbConnection.Delete method without the WHERE parameter.

RepoDb (v1.8.0-beta1)

  • Remove the support on dynamic query tree expresssions.
  • Removed the Command enumeration.
  • Removed the Ignored attribute.

RepoDb (v1.7.0)

  • Async Method Calls Optimizations
  • Expression-Based Queries
  • Removed Support for Recursive Query
  • Initial Support for Different Database Providers

RepoDb (v1.7.0-beta5)

  • Fixed the invalid binaries deployed at v1.7.0-beta4.
  • Modified async operations implementation to leverage the awaitable features.
  • Exposed the IsForProvider and GetProvider DbConnection extended methods.
  • Introduced a BulkInsertMapItem object to provide ability to override the BulkInsert operation default mappings.
  • Removed the recursive query features (DataEntity, DataEntityChildItemData, DataEntityChildListData, RecursionManager, ForeignAttribute).

RepoDb (v1.7.0-beta4)

  • Modified async operations implementation to leverage the awaitable features.
  • Exposed the IsForProvider and GetProvider DbConnection extended methods.
  • Introduced a BulkInsertMapItem object to provide ability to override the BulkInsert operation default mappings.
  • Removed the recursive query features (DataEntity, DataEntityChildItemData, DataEntityChildListData, RecursionManager, ForeignAttribute).

RepoDb (v1.7.0-beta3)

  • Fixed Target Framework Referencing Issues of NuGet Package
  • Added a new enumeration for data providers.
  • Updated the statement builder mapper to use the Provider object instead of DbConnection type.

RepoDb (v1.7.0-beta2)

  • Introduced Expression-Based Query for Connection and Repository Operations
  • Introduced Support to All (as Operation.All), Any (as Operation.Any), Contains (as Operation.Like, Operation.NotLike, Operation.In, Operation.NotIn`)
  • Introduced an Expression-Based qualifer field for Merge and InlineMerge operation
  • Unit Test updates for All, Any, and Contains operation

RepoDb (v1.7.0-beta1)

  • Introduced Expression-Based Query for Connection and Repository Operations
  • Introduced Expression-Based Parsing for QueryGroup, QueryField, Field, OrderField
  • Introduced Array-Based Parameters when calling ExecuteScalar
  • Removed Support for DataEntityMapper (Multiple Mapping)
  • Bug Fixes: https://github.com/RepoDb/RepoDb/issues?q=is:issue+is:closed

RepoDb (v1.6.4)

  • Performance: Introduced the field definitions for NULL checks at IL. #48
  • Performance: Added a compiled-functions (Expression) when converting the DataReader to Entity. FransBouma Recommendation #47

RepoDb (v1.6.2)

  • Performance: Introduced the field definitions for NULL checks at IL. #48
  • Performance: Added a compiled-functions (Expression) when converting the DataReader to Entity. FransBouma Recommendation #47

RepoDb (v1.6.0)

  • Performance: Introduced the field definitions for NULL checks at IL. #48
  • Performance: Added a compiled-functions (Expression) when converting the DataReader to Entity. FransBouma Recommendation #47

RepoDb (v1.5.3)

  • Optimization: This release has an extreme performance improvement. This is an update at v1.5.2.
  • Bug: Fixed the packages.config dependencies issues.

RepoDb (v1.5.2)

  • Performance Optimization: This release has an extreme performance improvement.

RepoDb (v1.5.0)

  • Performance Optimization: This release has an extreme performance improvement.

RepoDb (v1.3.5)

  • Refactor: Removed the DataEntity base class (request from the community)
  • Performance: Added a mechanism to cache the command texts
  • Bug Fix: Exception is thrown at Repository.Query when cacheKey is present
  • Bug Fix: Incorrect milliseconds is being saved for nullable System.DateTime properties

RepoDb (v1.3.0)

  • Refactor: Removed DataEntity - requested from the community
  • Performance: Cached the command texts
  • Bug Fix: Exception is thrown at Repository.Query when cacheKey is present
  • Bug Fix: Incorrect milliseconds is being saved for nullable System.DateTime properties

RepoDb (v1.2.0)

  • Stable Release (v1.2.0)

RepoDb (v1.2.0-beta5)

  • Stabilization: Enabled the recursive query, recursion depth and cyclomatic stack overflow complexity features.

RepoDb (v1.2.0-beta4)

  • Stabilization: Enabled the Recursive Query feature.

RepoDb (v1.2.0-beta3)

  • Stabilizing: Added additional validator for query expressions.
  • Stabilizing: Enabling the NULL values for Field when composing a query expression.

RepoDb (v1.2.0-beta2)

  • Stabilizing: Enabled the (Field.Name = (object)null)
  • Stabilizing: Enabled the Repository.Query if PrimaryKey is not Present

RepoDb (v1.2.0-beta1)

  • Beta Release 1

RepoDb (v1.1.11)

  • Supported multi-targeted framework (net40, netstandard1.3, netcore1.1)

RepoDb (v1.1.10)

  • Candidate for Beta Release

RepoDb (v1.1.10-beta1)

  • Supported multi-targeted framework (net40, netstandard1.3, netcore1.1)
  • Beta release 1 for v1.2.0

RepoDb (v1.1.9)

  • Introduced the IDbConnection Extended Operational Methods.
  • Optimized the DbRepository to use the IDbConnection Extended Operational Methods.
  • Removes the DbRepository property at BaseRepository class.
  • Made the DbRepository and BaseRepository Disposable.
  • Introduced quoting on Fields and Tables when composing SQL statements (via SqlDbStatementBuilder).
  • Documented the ConnectionPersistency, DeleteAll, InlineInsert, InlineMerge, InlineUpdate and Truncate operations.

RepoDb (v1.1.8)

Updates for v1.1.7 and v1.1.8

  • Supported identity primary key field identification from the database.
  • Fixed the parallelism issues by removing the unnecessary cache classes from the library.
  • Created a customized DataReader object for the BulkInsert operation, for future support for the .Net Core.
  • Introduced the repository Truncate operation.
  • Supported the inline operations for Insert, Merge and Update.
  • Added ConnectionPersistency capability for the repositories.
  • Built on a lower target framework 4.0 for earlier compatibility.
  • Next release is to support the .Net Core.

RepoDb (v1.1.7)

  • Supported identity primary key field identification from the database.
  • Fixed the parallelism issues by removing the unnecessary cache classes from the library.
  • Created a customized DataReader object for the BulkInsert operation, for future support for the .Net Core.
  • Introduced the repository Truncate operation.
  • Supported the inline operations for Insert, Merge and Update.
  • Added ConnectionPersistency capability for the repositories.
  • Built on a lower target framework 4.0 for earlier compatibility.
  • Next release is to support the .Net Core.

RepoDb (v1.1.6)

  • Supported identity primary key field identification from the database.
  • Fixed the parallelism issues by removing the unnecessary cache objects from the library.
  • Created a customized DataReader object for the BulkInsert operation to support the .Net Core.
  • Introduced the Truncate operation.
  • Supported the inline operations for Insert, Merge and Update.
  • Built on a lower target framework 4.0 for earlier compatibility.
  • Next release is to support the .Net Core.

RepoDb (v1.1.5)

  • Built on a lower target framework 4.0 for earlier compatibility.
  • Solution clean-up, removed interfaces that is not unnecessary for extensions.
  • Updated the caching by adding the expiration feature in the CacheItem.
  • Support identity primary field identification from the database.
  • Next release is to support the .Net Core.

RepoDb (v1.1.4)

  • Built on a lower target framework 4.0 for earlier compatibility.
  • Solution clean-up, removed interfaces that is not unnecessary for extensions.
  • Updated the caching by adding the expiration feature in the CacheItem.
  • Next release is to support the .Net Core.

RepoDb (v1.1.3)

  • Built on a target framework 4.0 for earlier compatibility
  • Renamed CacheItem.Timestamp to CacheItem.CreatedDate
  • Added CacheItem.IsExpired method
  • Added CacheItem.Expiration property
  • Removed ICacheItem
  • Removed ITraceLog
  • Removed ICancellableTraceLog
  • Removed ITypeMap
  • Removed IStatementBuilderMap
  • Removed IQueryGroup
  • Removed IQueryField
  • Removed IParameter
  • Removed IField
  • Removed IOrderField
  • Removed IDataEntityMap
  • Removed IQueryBuilder
  • Removed IDbRepository
  • Removed IBaseRepository

RepoDb (v1.1.2)

  • Built on a target framework 4.0 for earlier compatibility
  • Renamed CacheItem.Timestamp to CacheItem.CreatedDate
  • Added CacheItem.IsExpired method
  • Added CacheItem.Expiration property
  • Removed ICacheItem
  • Removed ITraceLog
  • Removed ICancellableTraceLog
  • Removed ITypeMap
  • Removed IStatementBuilderMap
  • Removed IQueryGroup
  • Removed IQueryField
  • Removed IParameter
  • Removed IField
  • Removed IOrderField
  • Removed IDataEntityMap

RepoDb (v1.1.1)

  • Version 1.1.0

RepoDb (v1.1.0)

  • Version 1.1.0

RepoDb (v1.0.20)

  • Version 1.0.20

RepoDb (v1.0.19)

  • Version 1.0.19

RepoDb (v1.0.18-beta01)

Updates

  • Supported the DbConnection.ExecuteQuery method, to return the `IEnumerable` list of RepoDb.Interfaces.IDataEntity.
  • IL Emit the conversion of System.Data.DbDataReader to System.Dynamic.DynamicObject when calling the DbConnection.ExecuteQuery method.

RepoDb (v1.0.17-alpha3)

Updates

  • Created a RepoDb.Reflection.ObjectConverter.
  • Supported the DbConnection.ExecuteQuery method, to return the `IEnumerable` list of RepoDb.Interfaces.IDataEntity.

Notes

  • Next version will be the Beta version of the library.

RepoDb (v1.0.17-alpha02)

Updates

  • Created a RepoDb.Reflection.ObjectConverter.
  • Supported the DbConnection.ExecuteQuery method, to return the `IEnumerable` list of RepoDb.Interfaces.IDataEntity.

Notes

  • Next version will be the Alpha version of the library.

RepoDb (v1.0.16)

Updates

  • Created a RepoDb.Reflection.ObjectConverter.
  • Supported the DbConnection.ExecuteQuery method, to return the `IEnumerable` list of RepoDb.Interfaces.IDataEntity.

Notes

  • Next version will be the Alpha version of the library.

RepoDb (v1.0.16-alpha-01)

Updates

  • Created a RepoDb.Reflection.ObjectConverter.
  • Supported the DbConnection.ExecuteQuery method, to return the `IEnumerable` list of RepoDb.Interfaces.IDataEntity.

Notes

  • Next version will be the Alpha version of the library.

RepoDb (v1.0.15)

  • Added RepoDb.Reflection.Delegates.DataReaderToEntityMapperDelegate
  • Added RepoDb.Reflection.ConstructorInfoCache
  • Added RepoDb.Reflection.DataReaderConverter
  • Added RepoDb.Reflection.DelegateCache
  • Added RepoDb.Reflection.DelegateFactory
  • Added RepoDb.Reflection.MethodInfoCache
  • Added RepoDb.Reflection.MethodInfoTypes
  • Added RepoDb.Reflection.ReflectionFactory
  • Added RepoDb.Reflection.TypeArrayCache
  • Added RepoDb.Reflection.TypeCache
  • Added RepoDb.Reflection.TypeTypes
  • Added RepoDb.Attributes.CreateMethodInfoAttribute
  • Returned IDataReader object when using the IDbConnection.ExecuteReader
  • Fixed the IL Emitter when mapping DataReader to Null properties
  • Added ExecuteQuery to IDbConnection extension
  • Added BeforeExecuteQuery and AfterExecuteQuery trace methods
  • Supported DataEntityMapper, DataEntityMap
  • Supported the DbRepository.Count and DbRepository.CountBig operations
  • Support Multi-Mapping for Class-Level

RepoDb (v1.0.14)

  • Reflection (IL Emitting)

RepoDb (v1.0.13)

  • Reflection (IL Emitting)

RepoDb (v1.0.12)

  • Same as RepoDb (v1.0.11)

RepoDb (v1.0.11)

Updates

  • Same as RepoDb (v1.0.10)

Fixes

  • Issue 2: Operation.In Exception is Thrown for Array Values
  • Issue 1: Class Entity Map Attribute PrimaryKey Identification

RepoDb (v1.0.10)

Updates

  • Support Column-Based Update using Dynamics (new Repository.InlineUpdate operation)
  • Supported BatchQuery Operation
  • Supported Field-Level Mappings
  • Added the currently used IQueryBuilder on the IStatementBuilder methods
  • Added QueryBuilderCache object
  • Added ExecutionTime (Timespan) property in the TraceLog class
  • Added CommandTypeCache object
  • Cached the CommadType on every calls
  • Removed the Create, Drop, Alter, Execute Command Enum Values (until being supported)
  • Added ClassMapNameCache object
  • Cache Map.Name on every calls
  • Added PropertyCache object
  • Supported Entity Property Caching
  • Added PrimaryPropertyCache object
  • Supported Entity Primary Property Caching
  • Added ClassMapCache object
  • Cached the Map attribute on every calls

Fixes

  • Issue 2: Operation.In Exception is Thrown for Array Values
  • Issue 1: Class Entity Map Attribute PrimaryKey Identification

RepoDb (v1.0.9)

  • Renamed ICache.Has to ICache.Contains
  • Removed ICache.GetAll and implement the IEnumerable interface instead
  • Optimized the mapping for SqlBulkCopy for BulkInsert

RepoDb (v1.0.8)

  • Fix the bug found when injecting the IStatementBuilder at the BaseRepository.
  • Renamed argument name orderFields to orderBy.
  • Renamed ExecuteReaderEx to ExecuteReader under Connection object.
  • Added Remove() on the ICache
  • Renamed ICache Set() method to Add()
  • Renamed DbCacheItem to CacheItem
  • Remove the sealed keyword at CacheItem to make it inheritable

RepoDb (v1.0.7)

Updates

  • Support dynamic query objects for QueryGroup
  • MemoryCache (ICache) object
  • Trace (ITrace) object
  • Added Constant class
  • Added support for Operation.Like and Operation.NotLike
  • Allow Querying, Deleting, Updating by PrimaryKey (when the value is passed in the method of WHERE argument)
  • Support of Operation.Between and Operation.NotBetween
  • Support Operation.In and Operation.NotIn
  • Optimized Statement Builder (SqlDbStatementBuilder)
  • Injectable Statement Builder
  • Support TOP and ORDER BY
  • Order.Ascending and Order.Descending
  • Support StatementBuilderMapper, IStatementBuilderMapper, StatementBuilderMap, StatementBuilderMap
  • Support ORDER BY parsing of the dynamic objects
  • Added support for the new Operation.Any and Operation.All

Removed

  • EventNotifier class has been obsolete by the Trace class

RepoDb (v1.0.6)

Updates

  • Support dynamic query objects for QueryGroup
  • MemoryCache (ICache) object
  • Trace (ITrace) object
  • Added Constant class
  • Added support for Operation.Like and Operation.NotLike
  • Allow Querying, Deleting, Updating by PrimaryKey (when the value is passed in the method of WHERE argument)
  • Support of Operation.Between and Operation.NotBetween
  • Support Operation.In and Operation.NotIn
  • Optimized Statement Builder (SqlDbStatementBuilder)
  • Injectable Statement Builder
  • Support TOP and ORDER BY
  • Order.Ascending and Order.Descending
  • Support StatementBuilderMapper, IStatementBuilderMapper, StatementBuilderMap, StatementBuilderMap
  • Support ORDER BY parsing of the dynamic objects
  • Added support for the new Operation.Any and Operation.All

Removed

  • EventNotifier class has been obsolete by the Trace class

RepoDb (v1.0.5)

Updates

  • EntityNotBulkInsertableException supported when calling BulkInsert with non SqlConnection connection object
  • BulkInsert optimization - ordering the columns based on the DB Table ordering (not on DataEntity properties ordering)
  • Initial implementation for complex query (QueryGroup)
  • Added QueryGroup (IQueryGroup)
  • Added Conjuctions for QueryGroup(s)
  • Added OrQueryGroup
  • Added AndQueryGroup
  • Supported IFieldValue interface for QueryField - to support the QueryGroup parameterized approach
  • Renamed QueryField.Value to QueryField.Parameter (with Name and Value properties) and change its Type from object to IParameter
  • In QueryFields, if the Operation is = and the parameter Value is equals to NULL then we compose ([Field] IS NULL) string statement
  • Solves the problem of: WHERE (SomeDate IS NULL)
  • We also did the same thing for != (SomeDate IS NOT NULL)
  • Used the <> instead of != in InEquality comparer
  • Supported EventNotifier (Tracing and Debugging purposes).
  • You can listen on the following events to see the Statement and Object passed before DB executions
  • BeforeQueryExecution
  • AfterQueryExecution
  • BeforeUpdateExecution
  • AfterUpdateExecution
  • BeforeDeleteExecution
  • AfterDeleteExecution
  • BeforeMergeExecution
  • AfterMergeExecution
  • BeforeInsertExecution
  • AfterInsertExecution
  • BeforeBulkInsertExecution
  • AfterBulkInsertExecution
  • BeforeExecuteNonQueryExecution
  • AfterExecuteNonQueryExecution
  • BeforeExecuteReaderExecution
  • AfterExecuteReaderExecution
  • BeforeExecuteScalarExecution
  • AfterExecuteScalarExecution
  • CancelledExecution

RepoDb (v1.0.4)

  • Bug Fix: Error when converting the SqlDataReader data back to the class object when the value is DBNull.Value
  • Minor code optimizations and refactoring

RepoDb (v1.0.3)

  • Bug Fix: Error when converting the SqlDataReader data back to the class object when the value is DBNull.Value
  • Minor code optimizations and refactoring

RepoDb (v1.0.2)

  • Converting DataReader to Object
  • Async Calls (Task.Factory.StartNew)
  • Added support to auto find (Id) property as prospected PrimaryKey if the [Primary] attribute is not on place

RepoDb (v1.0.1)

  • Initial Release for RepoDb (.Net Extension)
  • Supported Dynamic DbConnection
  • Supported Mapping Command Type (Entity Level)
  • Supported ExecuteScalar, ExecuteNonQuery, ExecuteReader (DataEntity and ExpandoObject)
  • Supported Primary Attribute (IsIdentity)
  • Supported BaseRepository that uses the functionality of the DbRepository
  • Supported the GetSqlStatement (Entity Level)
  • Supported Object Driven approach when doing a query, delete, update and merge
  • Supported Merge Method (Entity Level only)
  • Supported Bulk Insert (SqlBulkCopy only)
  • Supported to get the Connection at all Repositories
  • Supported Transaction Handlers
  • Supported Async methods
  • Supported DbRepository property at the BaseRepository
  • Supported Dynamic object returns for ExecuteReaderEx
  • Supported code-guards at the DbRepository (Queryable, Insertable, Deletable, Mergeable, Updateable)
  • Supported Type Mapper

RepoDb (v1.0.0)

  • Initial Release for RepoDb (.Net Extension)
  • Supported Dynamic DbConnection
  • Supported Mapping Command Type (Entity Level)
  • Supported Execute Scalar
  • Supported Primary Attribute (IsIdentity)
  • Supported BaseRepository that uses the functionality of the DbRepository
  • Supported the GetSqlStatement (Entity Level)
  • Supported Object Driven approach when doing a query, delete, update and merge
  • Supported Merge Method (Entity Level only)
  • Supported Bulk Insert (SqlBulkCopy only)
  • Supported to get the Connection at all Repositories
  • Supported Transaction Handlers
  • Supported Async methods
  • Supported DbRepository property at the BaseRepository
  • Supported Dynamic object returns for ExecuteReaderEx
  • Supported code-guards at the DbRepository (Queryable, Insertable, Deletable, Mergeable, Updateable)
  • Supported Type Mapper