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
QueryMultipleAsyncoperations. 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
InternalsVisibleToentries forRepoDb.Db2andRepoDb.Db2.BulkOperationsin theRepoDb.Coreproject, 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 reuseRepoDb.Core’s internal implementation details rather than duplicating them. #1241
Breaking
- Reworked the automatic conversion logic in Converter
.ToType<T>(). AnullorDBNullscalar result now raises a clearerInvalidCastExceptionnaming both the offending value and the target type, unlessGlobalConfiguration.Options.ConversionTypeis set toAutomatic, the target is a reference/by-ref type, or the target isSystem.Object- in those cases the type’sdefaultvalue is returned instead. The Exists operation now always forces the automatic conversion for its underlying scalar result (returningfalsewhen nothing is found), regardless of the globalConversionTypesetting, since a missing row is a valid outcome rather than a conversion failure. Failed type conversions (e.g. an incompatible value passed toConvert.ChangeType) also now surface as anInvalidCastExceptionwith a descriptive message instead of the underlying runtime exception. This impacts the followingDbConnectionextension operations (sync and async overloads alike): - Made the
whereargument required (removed its defaultnullvalue) on theAverage,BatchQuery,Count,Max,Min,SkipQueryandSumoperations, across theBaseRepository,DbRepositoryandDbConnectionobjects and extensions. #1266
Enhancements
- Set the default value of the
orderargument toOrder.Ascendingon 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 syncExists<TWhat>(TWhat what, ...)overload to BaseRepository to match its existing async counterpart.
RepoDb (v1.15.1)
- Bug: InsertAllAsync throws an exception in
v1.14.0. #1233
RepoDb (v1.15.0)
- Version referenced by the new RepoDb.Telemetry.Core and RepoDb.Telemetry.Default packages
v0.0.1, released alongside the first release of the RepoDB Insights Telemetry solution.
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
DateTimetoDateOnly. #1154 - Added full
DateOnlysupport. #1184 - Added support for
intandshortinSetEntityIdentitiesfor 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.ByteinClientTypeToDbTypeResolver. #1213 - Fixed
keepIdentityflag bug in BulkInsert and BulkMerge operations. #1182 - Fixed nested/concurrent transaction exception when using
TransactionScopewith PostgreSQL bulk operations. #1159 #1160 #1170 - Addressed CVE-2023-36414 and CVE-2024-0056. #1207
- Converted enum to type based on
DbTypefor PostgreSQL. #1152 - Updated
GetCommandText()to usepg_indexcatalog inPostgreSqlDbHelper. #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)
- Feature: Introduce the SkipQuery operation. #377
- Bug: RepoDb.SqlServer v1.13.0 - Memory leak in Microsoft.Data.SqlClient 5.0.1 #1128
- Introduced the
DynamicHandler()method into the IDbSetting interface.
RepoDb (v1.13.1-alpha1)
- Upgraded the
Microsoft.Data.SqlClientpackagev5.1.0. - Enabled the
net7.0TFM.
RepoDb (v1.13.0)
Highlights
- Enhancement: Re-implement the Tracing overall implementations - Addressing the Simplicity and Extensibility #941
Breaking
- Enhancement: Simplified the constructors of the QueryField and DirectionalQueryField classes.
- Enhancement: Simplified the constructors of the extended query field objects FunctionalQueryField, LeftQueryField, RightQueryField, LeftTrimQueryField, RightTrimQueryField, LengthQueryField, LenQueryField, LowerQueryField, UpperQueryField, TrimQueryField classes.
- Enhancement: Removed the Field argument from all the query field objects.
- Enhancement: Removed the
Typeproperty from the DirectionalQueryField object. - Enhancement: Enable IDbDataParameter as query arguments #1060
Non-Breaking
- Bug: No coercion operator is defined between types
System.TimeSpanandSystem.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
fieldsandcacheItemExpirationas 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
includeMappingsargument from thePropertyInfo.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
Asyncmethods to the ICache interface #1080 - Bug: QueryAsync interfering with PK #1046
- Question: How does one trace
Asyncmethods? #945 - Introduced the
NullToDbNullmethod 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)
- Upgraded the Microsoft.Data.SqlClient package to
v5.0.1.
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)
- Introduced the
NullToDbNullmethod 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
RepoDb (v1.13.0-alpha1)
Highlights
- Enhancement: Re-implement the Tracing overall implementations - Addressing the Simplicity and Extensibility #941
Breaking
- Enhancement: Simplified the constructors of the QueryField and DirectionalQueryField classes.
- Enhancement: Simplified the constructors of the extended query field objects FunctionalQueryField, LeftQueryField, RightQueryField, LeftTrimQueryField, RightTrimQueryField, LengthQueryField, LenQueryField, LowerQueryField, UpperQueryField, TrimQueryField classes.
- Enhancement: Removed the Field argument from all the query field objects.
- Enhancement: Removed the
Typeproperty from the DirectionalQueryField object. - Enhancement: Enable IDbDataParameter as query arguments #1060
Non-Breaking
- Bug: No coercion operator is defined between types
System.TimeSpanandSystem.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
fieldsandcacheItemExpirationas 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
includeMappingsargument from thePropertyInfo.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
Asyncmethods to the ICache interface #1080 - Bug: QueryAsync interfering with PK #1046
- Question: How does one trace
Asyncmethods? #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 theDataEntityExtension.GetSchema(string, IDbSetting)instead. - Deprecated the method
DataEntityExtension.GetTableName(string). Use theDataEntityExtension.GetTableName(string, IDbSetting)instead. - Deprecated the method
Type.GetImplementedInterfaces()(extended method). Use theType.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.Asyncpackage tov6.1.0.
RepoDb (v1.12.10-beta4)
- Compiler update to utilize the customized
DbParameterExtensionclass to compliment the compiler’s needs for theNpgsqlParameter.NpgsqlDbType.Unknown. - Complimentary support to the Enum(s) for the
RepoDb.PostgreSql.BulkOperationspackage. - Upgraded the
System.Linq.Asyncpackage tov5.1.0. - Upgraded the
Microsoft.Bcl.AsyncInterfacespackage tov6.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
TitleandPackageTagstags 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.0package. - NETSTANDARD2.0: Added the
Microsoft.Bcl.HashCode v1.1.1package. - Added the
System.Linq.Async v5.0.0package. - Added the
net5.0as 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
Sizeexception #836. - Bug: Calls to any operation throws an object
NullReferenceExceptionif 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
Sizeproperty into the DirectionalQueryField object. - Enhancement: Exposed the
Typeproperty of the DirectionalQueryField object. - Enhancement: Added the
NULLcomparer 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.0package. - NETSTANDARD2.0: Added the
Microsoft.Bcl.HashCode v1.1.1package. - Added the
System.Linq.Async v5.0.0package. - Added the
net5.0as 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
Sizeexception #836. - Bug: Calls to any operation throws an object
NullReferenceExceptionif not properly initialized. #861. - Enhancement: Added the
Sizeproperty into the DirectionalQueryField object. - Enhancement: Exposed the
Typeproperty of the DirectionalQueryField object. - Enhancement: Added the
NULLcomparer 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)
- (Rebuilt Only) Bug: OrderField ignores MapAttribute #769
RepoDb (v1.12.8-beta2)
- Bug: OrderField ignores MapAttribute #769
- Bug: Querying by string field fails in VB .Net #767
RepoDb (v1.12.8-beta1)
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)
- Feature: Support the Output Parameters #686 - NEW
- Enhancement: Add the
__RepoDb_OrderColumnat the Batch Operations (InsertAll, MergeAll) #703 - Enhancement: Add a
Reset()method into the Parameter object. #709 - Enhancement: Add the methods named
GetName()andGetValue()in the QueryField object. #707 - Enhancement: Add a method DbParameter into the QueryField object. #711
RepoDb (v1.12.5)
Breaking
- Adhoc: Remove the Initialize method from the DataEntityDataReader. #673
Non-Breaking
- Enhancement: Add the dynamic ExecuteQueryMultiple method in the DbRepository #630
- Possible bug - Enum with Flag attribute is not correctly handled #624
- [Core] Support ExpandoObject in Insert via
TableName. #234 - [Core] Support ExpandoObject in Merge via
TableName. #238 - [Core] Support ExpandoObject in Update via
TableName. #236 - [Core] Support ExpandoObject in InsertAll via
TableName. #235 - [Core] Support ExpandoObject in MergeAll via
TableName. #239 - [Core] Support ExpandoObject in UpdateAll via
TableName. #237 - Introduce the support of Dynamic and ExpandoObject in BulkInsert. #243
- Enhancement: Support ExpandoObject in BulkInsert #610
- Enhancement: Support ExpandoObject in BulkMerge #611
- Enhancement: Support ExpandoObject in BulkUpdate #612
- Enhancement: Support ExpandoObject in BulkDelete #613
- Bug: Exception is being thrown for the Type level PropertyHandler for Dynamic Insertion #628.
- Added a validation to ensure the type of the
TPropertyHandlerhas implemented the IPropertyHandler interface when calling theAdd()method of the PropertyHandlerCache object. - Request: Do not crash if on empty enumerable on bulk operation #635.
- Request: Introduce optional caching to ExecuteScalar methods. #648
- Enhancement: Add the non-parameterized Truncate operation. #652
- Bug: Query failed when field mapping used on FSharp records. #662
- Bug: FluentMapper is not working with Abstract Properties #666
- Question: IPropertyHandler for
Dictionary<string, string>#647 - Upgraded the Microsoft.Data.SqlClient to
v2.1.0. - Upgraded the
System.ComponentModel.Annotationstov5.0.0. - Fixed the related issues found at model-based operation ExecuteQuery (almost related to #666)
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
- Adhoc: Remove the Initialize method from the DataEntityDataReader. #673
Non-Breaking
- Bug: Query failed when field mapping used on FSharp records. #662
- Bug: FluentMapper is not working with Abstract Properties #666
- Question: IPropertyHandler for
Dictionary<string, string>#647 - Upgraded the Microsoft.Data.SqlClient to
v2.1.0. - Upgraded the
System.ComponentModel.Annotationstov5.0.0.
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)
- Bug: Exception is being thrown for the Type level PropertyHandler for Dynamic Insertion #628.
- Added a validation to ensure the type of the
TPropertyHandlerhas implemented the IPropertyHandler interface when calling theAdd()method of the PropertyHandlerCache object.
RepoDb (v1.12.5-beta1)
- Enhancement: Add the dynamic ExecuteQueryMultiple method in the DbRepository #630
- Possible bug - Enum with Flag attribute is not correctly handled #624
- [Core] Support ExpandoObject in Insert via
TableName. #234 - [Core] Support ExpandoObject in Merge via
TableName. #238 - [Core] Support ExpandoObject in Update via
TableName. #236 - [Core] Support ExpandoObject in InsertAll via
TableName. #235 - [Core] Support ExpandoObject in MergeAll via
TableName. #239 - [Core] Support ExpandoObject in UpdateAll via
TableName. #237 - Introduce the support of Dynamic and ExpandoObject in BulkInsert. #243
- Enhancement: Support ExpandoObject in BulkInsert #610
- Enhancement: Support ExpandoObject in BulkMerge #611
- Enhancement: Support ExpandoObject in BulkUpdate #612
- Enhancement: Support ExpandoObject in BulkDelete #613
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.ReadAsyncmethod (in v1.12.0 to v1.12.2) #601
RepoDb (v1.12.2)
- Bug: A
NullReferenceExceptionIs 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
fieldsargument 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
tableNameparameter. #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
Identityfield if thePrimaryfield 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
IsNullOrEmptytoIsNullOrWhiteSpace. - Enhancement: Replaces the usage of
ToLower()toToLowerInvariant(). - Enhancement: Replaces the usage of string equality to
string.Equals(value1, value2, StringComparer.OrdinalIgnoreCase). - Enhancement: Added the
Asyncmethods in the compiler. #482 #477 - Enhancement: Add the dynamic ExecuteQuery method in the DbRepository. #517
- Enhancement: Renamed the
whereOrPrimaryKeyargument towhatto extend the support to both (data entity object, dynamic/object expression, primary key and identity key), to further support theF#community. BREAKING - Enhancement: Updated the QueryGroup.Parse() method to be an argument-typed-based method.
- Enhancement: Refactored and optimized the
Parsemethod of the QueryField and QueryGroup objects. - Enhancement: Refactor the Table-Based Calls to return
IEnumerable<ExpandoObject>instead ofIEnumerable<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
IsAssignableFromcan be used over the customizedIsInterfacedTo. #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
cacheItemExpirationarguments nullable. BREAKING - Refactoring: Make the BaseRepository and DbRepository objects
CacheItemExpirationproperty nullable. - Refactoring: Make the CacheItem object
CacheItemExpirationproperty 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,MissingQualifierFieldsExceptionand theIdentityFieldNotFoundException. - 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 ofIEnumerable<dynamics>. #540 - Enhancement: Support for returning IDictionary<string, object> instead of ExpandoObject. #537
- Enhancement: Re-assess if the
IsAssignableFromcan be used over the customizedIsInterfacedTo. #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
Parsemethod 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
fieldsargument 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
tableNameparameter. #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
Identityfield if thePrimaryfield 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
IsNullOrEmptytoIsNullOrWhiteSpace. - Enhancement: Replaces the usage of
ToLower()toToLowerInvariant(). - Enhancement: Replaces the usage of string equality to
string.Equals(value1, value2, StringComparer.OrdinalIgnoreCase). - Enhancement: Added the
Asyncmethods in the compiler. #482 #477 - Enhancement: Add the dynamic ExecuteQuery method in the DbRepository. #517
- Enhancement: Renamed the
whereOrPrimaryKeyargument towhatto extend the support to both (data entity object, dynamic/object expression, primary key and identity key), to further support theF#community. BREAKING - Refactoring: Make all the
cacheItemExpirationarguments nullable. BREAKING - Refactoring: Make the BaseRepository and DbRepository objects
CacheItemExpirationproperty nullable. - Refactoring: Make the CacheItem object
CacheItemExpirationproperty nullable. - Test: Added the Integration Tests for the
NonKeyedTable. - Added the
KeyFieldNotFoundException,MissingQualifierFieldsExceptionand theIdentityFieldNotFoundException. - 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:
NullReferenceExceptionoccurs when InsertAllAsync is executed on Connection that belongs toTransactionScope. #490 - Bug: Typed
UpdateAsyncfails 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
SchemaSeparatorproperty from the IDbSetting interface #475 - Enhancement: Using async DbFieldCache #481
- Enhancement: Add a
SessionIdproperty in the TraceLog class. #484 - Enhancement: Refactor the usage of
Count()andElementAt(). - Request: Enable the Enumerable when calling the operations with
INoperation. #495 - Obsolete: Completely removed the
PropertyTypeHandlerMapperclass. - Obsolete: Completely removed the
TypeMapper.Map()method. - Obsolete: Completely removed the
TypeMapper.Unmap()method. - Obsolete: Completely removed the
TypeMapper.ConversionTypeproperty. - Added some micro optimizations #476
- Added a
DataEntityReader.Connectionproperty. - Added a
DataEntityReader.Transactionproperty. - Added a
DataEntityReader.Initializemethod - 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.Annotationspackage tov4.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
cacheargument 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
cacheargument 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>()toIEnumerable<Field>(instead of Field). - Added more Unit Tests on Field class parsing method.
- Removed the
BeforeBulkInsertandAfterBulkInsertfrom 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
expressionfor thequalifiersargument.
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
inputargument. - Bug: The property handler mapping via FluentMapper or PropertyHandlerMapper is not being triggered. #438
- Bug: No coercion operator is defined between types
System.StringandSystem.Guid. #437 - Added an extensive Integration Tests for Property Handler Implicit Mapping.
- Added an extensive Unit and Integration Tests for
Key,Columnand Table attributes support. #435 - Added more Unit Tests for
Key/PrimaryandTable/Column/Mapcollisions. #435 - Added the
GetTypeMapAttribute(),GetPropertyHandler(),GetPropertyHandlerAttribute()methods in the ClassProperty class. - Added the
PrimaryResolverto resolve the primary ClassProperty of the data entity type. - Added the
IdentityResolverto resolve the identity ClassProperty of the data entity type. - Added the
ClassMappedNameResolverto resolve the database object name mapping of the data entity type. - Added the
PropertyMappedNameResolverto resolve the cached column name mappings of the property. - Added both the
TypeMapPropertyLevelResolverandTypeMapTypeLevelResolverclasses to resolve the equivalent DbType object of both the property and .NET CLR type. - Added both the
PropertyHandlerPropertyLevelResolverandPropertyHandlerTypeLevelResolverclasses to resolve the equivalent property handler of both the property and .NET CLR type. - Added the
entityTypeargument in theDbCommandExtensions.CreateParameters()method.
RepoDb (v1.11.1-beta3)
- Added the
entityTypeargument in theDbCommandExtensions.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.StringandSystem.Guid. #437 - Added an extensive Unit and Integration Tests for
Key,Columnand Table attributes support. #435 - Added more Unit Tests for
Key/PrimaryandTable/Column/Mapcollisions. #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
inputargument. - Added the
PrimaryResolverto resolve the primary ClassProperty of the data entity type. - Added the
IdentityResolverto resolve the identity ClassProperty of the data entity type. - Added the
ClassMappedNameResolverto resolve the database object name mapping of the data entity type. - Added the
PropertyMappedNameResolverto resolve the cached column name mappings of the property. - Added both the
TypeMapPropertyLevelResolverandTypeMapTypeLevelResolverclasses to resolve the equivalent DbType object of both the property and .NET CLR type. - Added both the
PropertyHandlerPropertyLevelResolverandPropertyHandlerTypeLevelResolverclasses to resolve the equivalent property handler of both the property and .NET CLR type.
RepoDb (v1.11.1-beta1)
- Bug: The property handler mapping via FluentMapper or PropertyHandlerMapper is not being triggered. #438
- Added an extensive Integration Tests for Property Handler Implicit Mapping.
RepoDb (v1.11.0)
- Enhancement: Use lambda to define property handlers within DTO constructor. #421
- Enhancement: Consider Mapping class #415
- Request: Allow custom implementation without attribute #399
- Question: ColumnName Resolver #387
- Added the FluentMapper, EntityMapFluentDefinition and TypeMapFluentDefinition.
- Added the expression-based invocation in the
Add(),Get()andRemove()methods of the DbHelperMapper, DbSettingMapper and StatementBuilderMapper classes. - Refactor the
Parse()method of the OrderField and Field classes. - Refactor the
GetProperty()method of theExpressionExtensionclass to solve the problem in the mappers. - Added the PropertyHandlerCache class.
- Added the methods
Add(),Remove()andGet()at the PropertyHandlerMapper class to cater the property level mapping. - Added a class named PropertyHandlerMapper as a replacement of
PropertyTypeHandlerMapperclass. - Added more Integration Tests on the implicit mappings feature.
- Added Unit and Integration Tests for the fluent mappings.
- Added the
ObseleteAttributeattribute at thePropertyTypeHandlerMapperclass. - Removed the
throwExceptionarguments in theRemove()method of the DbHelperMapper, DbSettingMapper and StatementBuilderMapper classes. - Removed the return value of the
Remove()method of the DbHelperMapper, DbSettingMapper and StatementBuilderMapper. - Rename all the mappers
Flush()method intoClear().
RepoDb (v1.11.0-beta4)
- Refactor: Renamed the argument
objectNametodatabaseObjectNameof ClassMapper class. - Added: Added the method
Get()viapropertyName, Field and Linq expression at PropertyCache class. - Refactor: Hide the method
Get()via ClassProperty at ClassExpression class. - Removed: Removed the method
Get()via DbField at ClassExpression class.
All packages are affected:
- Bug: (Direct Reports) Fixed the issue at
DeleteAll()via primary keys if the items is beyond2100. - Performance: Reverted the value of
Constant.DefaultBatchOperationSizeinto10.
RepoDb (v1.11.0-beta3)
- Issue in the PrimaryMapper and IdentityMapper for the interface property collision reported by the user in RepoDB v1.11.0-beta2.
- Removed the exposure of the
PropertyInfoand ClassProperty in PropertyHandlerCache, TypeMapCache, PropertyHandlerMapper and TypeMapper classes. - Removed the
Add(),Get,Remove()methods of the PropertyMapper with bothPropertyInfoand ClassProperty arguments.
RepoDb (v1.11.0-beta2)
- Removed the return value of the
Remove()method of the DbHelperMapper, DbSettingMapper and StatementBuilderMapper. - Added the expression-based invocation in the
Add(),Get()andRemove()methods of the DbHelperMapper, DbSettingMapper and StatementBuilderMapper classes. - Removed the
throwExceptionarguments in theRemove()method of the DbHelperMapper, DbSettingMapper and StatementBuilderMapper classes. - Refactor the
Parse()method of the OrderField and Field classes. - Refactor the
GetProperty()method of theExpressionExtensionclass to solve the problem in the mappers. - Added more Integration Tests on the implicit mappings feature.
RepoDb (v1.11.0-beta1)
- Added the PropertyHandlerCache class.
- Added the methods
Add(),Remove()andGet()at the PropertyHandlerMapper class to cater the property level mapping. - Added a class named PropertyHandlerMapper as a replacement of PropertyHandlerMapper class.
- Added the
ObseleteAttributeattribute at the PropertyHandlerMapper class. - Rename all the mappers
Flush()method intoClear().
RepoDb (v1.11.0-alpha1):
- Added the ClassMapper, PropertyMapper, PrimaryMapper, IdentityMapper and TypeMapCache classes.
- Added the
Add<T>,Get<T>andRemove<T>methods in the TypeMapper class. - Made the
Mapmethod of the TypeMapper class obsolete. - Made the
Unmapmethod of the TypeMapper class obsolete. - Added the
PropertyNotFoundExceptionexception class. - Added a method named
GenerateCustomizedHashCodein thePropertyExtensionclass. - Added the Converter class to handle the TypeMapper.Conversion property.
- Removed the internal class named
ObjectConverter. All methods has been placed to a newly created class named Converter. - Made the
Get(Type)method of ClassMappedNameCache class exposed aspublic. - Added more thorough Unit Tests for
Class,Property,Primary,IdentityandTypemappings (both Cachers and Mappers).
RepoDb (v1.10.11):
- Implemented the IExpirable into CacheItem.
- Added a
TEntitygeneric type in the CacheItem properties. - Added the IExpirable interface.
- Added the CacheItem.CacheItemExpiration property.
- Added the
ConverterNotFoundExceptionclass. - At the CancellableTraceLog.Cancel() method, the
throwExceptionargument has been defaulted thetrue. - Enhancement: Ensure that PropertyHandler(s) must ignore the TypeMapper automatic conversion and also
Enumhandlers. #412 - Enhancement: Make the Constant.DefaultBatchOperationSize property value to
10. Targeting the bulk operations (i.e.: BulkInsert, BulkDelete, BulkMerge and BulkUpdate) default batch-size. - Bug: UnaryExpression: Add support for
&&and||operators in the expressions #398 - Bug: Enum Bug #400
- Bug: Enum Bug on Null value on Insert. #401
- Bug: PropertyHandler for Nullable Enum #402
- Bug: Calling to DeleteAll operation with the list of
PrimaryKeysandTransactionobject is failing. Reported by Christian Franck. #404.
RepoDb (v1.10.11-beta3):
- Implemented the IExpirable into CacheItem.
- Added a
TEntitygeneric type in the CacheItem properties. - Added the IExpirable interface.
- Added the CacheItem.CacheItemExpiration property.
- Bug: Enum Bug on Null value on Insert. #401
- Added the
ConverterNotFoundExceptionclass. - Enhancement: Ensure that PropertyHandler(s) must ignore the TypeMapper automatic conversion and also
Enumhandlers. #412 - Enhancement: Make the Constant.DefaultBatchOperationSize property value to
10. Targeting the bulk operations (i.e.: BulkInsert, BulkDelete, BulkMerge and BulkUpdate) default batch-size.
RepoDb (v1.10.11-beta2):
- Bug: Enum Bug #400
- Bug; PropertyHandler for Nullable Enum #402
RepoDb (v1.10.11-beta1):
- At the CancellableTraceLog.Cancel() method, the
throwExceptionargument has been defaulted thetrue. - Bug: Calling to DeleteAll operation with the list of
PrimaryKeysandTransactionobject 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
Typeextended method namedIsNullable. - Bug: Solve the intermittent
NullReferenceExceptionwhen calling the Batch Operations (i.e.: InsertAll, MergeAll, UpdateAll). #392 - Bug: The property handlers mapped via PropertyHandlerMapper is failing if both
NULLABLEandNON-NULLABLEproperty types are present in the class. #394
RepoDb (v1.10.10-beta1)
- Full support to Bulk Operations (BulkDelete, BulkInsert, BulkMerge and BulkUpdate).
AsFieldsAsAliasFields- added left and right aliases.- XML Documentation updates for the SQL statement Builders.
RepoDb (v1.10.9)
- Enhancement: Compiler changes for
ClassProperty.GetDbType()calls. - Feature: Support for
SqlServer.SqlDbType(Microsoft and System),PostgreSql.NpgsqlDbType#390 andMySql.MySqlDbType.
RepoDb (v1.10.8)
- Bug:
InvalidCastExceptionConvertingEnumstoStringsin Postgres #388
RepoDb (v1.10.7)
- Enhancement: Separate the
Bulkoperations into a separate Solution and Nuget Package. #385 - Enhancement: Separete all
SqlServerrelated stuffs to a different library namedRepoDb.SqlServer. #282 - Enhancement: Remove the support to
System.Data.SqlClientin theRepoDb.Core. #386
RepoDb (v1.10.6)
- Added the class property as an argument context in the
Get()andSet()method. - Exposed the underlying DbRepository property at the
[BaseRepository](/class/baserepository)object.
RepoDb (v1.10.5)
Highlights
- Support: Initiate the support to Microsoft.Data.SqlClient namespace. #374
- Feature: Support
PropertyHandlerAttributeas requested. #367 - Feature: Re-enabled the BulkInsert for
DataTable. - Feature: Support deleting an array of entity objects or primary keys via DeleteAll. #353
Others
- Support: Change the target type to .NetStandard 2.0.
- Support: Initiate the support to Microsoft.Data.SqlClient namespace. #374
- Enhancement: Support to Microsoft.Data.SqlClient #359
- NTH: Add a table hints in Merge and MergeAll. #370
- NTH: Add a table hints in Update and UpdateAll. #371
- NTH: Add a table hints in Delete and DeleteAll. #376
- NTH: Add a table hints in Insert and InsertAll. #379
RepoDb (v1.10.4)
- Initial support of RepoDb.PostgreSql.
- Added
IsPreparableProperty for IDbSetting. - Removed the
basedOnFieldslogic when extracting the DbDataReader. - InsertAll: Parsed the first entity property fields if the
fieldsargument is not defined. - Enhancement: Introduce the BaseDbSetting class to cater a uniform
HashCodegenerator. #369 - Adhoc: Sealed and exposed the
DbSettings,DbHelpersand theDbStatementBuildersclasses. - Enhancement: Introduced the
DbConvertFieldResolveras the base converter field.
RepoDb (v1.10.4-beta2)
- Initial support of RepoDb.PostgreSql.
RepoDb (v1.10.4-beta1)
- Error: Invalid expression. The property
Idis not defined on a target type #364 - MySql Support.
RepoDb (v1.10.3)
- Revert the recurrent calls to DbFieldCache.Get() in the ExecuteQuery method.
RepoDb (v1.10.2)
- Bug (Community Request): The primary field is not found exception when primary key column name is different from
Primaryattribute property name is different whileConnection.Updateis called. #356 - Bug: Set the return value of
MaxandMinoperations 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
MaxandMinoperations 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
Primaryattribute property name is different whileConnection.Updateis 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
Upsertoperations (abstracted with Merge operation) for the data providers that does not support multi-statement execution andMERGEcommand. - Feature: Added support to
Averageand AverageAll (with itsAsyncversion). - Feature: Added support to Exists (with its
Asyncversion). - Feature: Added support to
Maxand MaxAll (with itsAsyncversion). - Feature: Added support to
Minand MinAll (with itsAsyncversion). - Feature: Added support to
Sumand SumAll (with itsAsyncversion). - Feature: Create an extended method
DbConnection.GetLastInsertedIdentity()for other data providers extensibility complete support. - Enhancement: Introduced
[QueryGroup](/class/querygroup).IsForUpdate()method. - Enhancement: Splitted the
SqlServerStatementBuilderto a BaseStatementBuilder. Further supports for other data providers base statement building. - Enhancement: Supported IResolver for 7 generic types.
- Refactoring: Renamed the
SqlDbHelpertoSqlServerDbHelper. - Refactoring: Renamed the
SqlStatementBuildertoSqlServerStatementBuilder. - Test: Added an extensive Unit/Integration Tests for
Average, Exists,Max,Min,Sum(and all itsAsyncoperations). - Test: Added an extensive Unit Tests for
[QueryGroup](/class/querygroup).GetString()andQueryField.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.
IDbTransactionobject. #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
MapAttributeleads toSystem.NullReferenceException: Object reference not set to an instance of an object. #274 - Bug:
SqlDbHelper.GetFieldsis failing if the transaction object is present. #278 - Enhancement: Remove database streaming when extracting table schema.
- Enhancement: Add
AsFields()extended methods for theIEnumerableof DbField objects #273 - Enhancement: Add
DbFieldCache.GetAsyncmethod. #275 - Enhancement: Add DataEntityDataReader into BulkInsert that accepts TableName and Entities #271
- Enhancement: Add
AsFields()extended methods for theIEnumerableof 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
IDbTransactionobjects. These affected too many chain of calls. - Refactoring: Removed the
ToLower()and replaced byStringComparer.OrdinalIgnoreCase.
RepoDb (v1.9.9-beta5)
- Bug:
SqlDbHelper.GetFieldsis failing if the transaction object is present. #278 - Refactoring: Refactor the code snippets for DbFieldCache to accept
IDbTransactionobjects. 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.GetAsyncmethod. #275 - Enhancement: Add DataEntityDataReader into BulkInsert that accepts TableName and Entities #271
- Enhancement: Add
AsFields()extended methods for theIEnumerable<DbField> - Test: Add IntegrationTests on BulkInsert that accepts DataEntities and TableName.
RepoDb (v1.9.9-beta2)
- Enhancement: Add
AsFields()extended methods for theIEnumerable<DbField>#273 - Bug: Calling InsertAll with
MapAttributeleads toSystem.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
DbTransactionobject 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
Asyncmethod support toQueryMultipleExtractor.Extract. #255 - [Test] Add an
Asyncmethod support toQueryMultipleExtractor.Scalar. #256 - [Test] Introduce UnitTest for IDbOperationProvider Interface. #253
- [Test] Create a test for IStatementBuilder for all
Asyncoperations forDbConnection, DbRepository, BaseRepository. #218 - [Test] Add more extensive UnitTest for
IN,NOT IN,BETWEEN,NOT BETWEEN,LIKEandNOT LIKEoperations. #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,LIKEandNOT LIKEoperations. #180 - [Test] Create IntegrationTest for
DbTransaction(Insert, Merge, Delete, Update) #181 - [Added] Introduce
SqlDbOperationProviderClass. #251 - [Added] Introduce
DbOperationProviderMapperClass. #252 - [Added] Introduce
IDbOperationProviderInterface. #250 - [Adhoc] Add
BatchSizein BulkInsert. #257 - [Adhoc] Remove all
obsoletemethods 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
QueryandQueryAsyncTable-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
DataEntityobject. #188 - [Performance] Create a cached Expression when setting back the
PrimaryKeyvalues 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
UnitTestfor 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 theToArray().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
qualifierswere 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,
DbConnectionAsync/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
QueryandQueryAsyncTable-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
DataEntityobject. #188 - [Performance] Create a cached Expression when setting back the
PrimaryKeyvalues 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
UnitTestfor 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 theToArray().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,
DbConnectionAsync/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
MapItemClasses from the Mappers. #226 - [Removed]
TypeMapItemClass - [Removed]
DbIdentityCacheClass
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
Primaryand Identity Columns. #182 - [Enhancement] Add the
IdentityDbFieldin both Merge and Update SqlStatementBuilder. #198 - [Enhancement] Rename the
DataReaderConverterto DataReader. #200 - [Enhancement] Add Flush method in the CommandTextCache, and exposed the class. #220
- [Performance] Create a cached Expression when setting back the
PrimaryKeyvalues in Insert and InsertAll. #211 - [Performance] Use the compiled function for inserting single
DataEntityif the BatchSize is 1 for InsertAll. #217 - [Fixed] Remove the Insert and InsertAll identity conversion from SQL. #203 - Fixed by introducing the
ConversionResolverclasses. - [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
SetParametersextended methods forDbCommandobject. #196 - [Core, Requested] Re-enable the operation for Deletevia
DataEntityobject. #185 - [Core, Requested] Re-enable the operation for Updatevia
DataEntityobject. #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 Taskin 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
Tracecall for allAsyncoperations. #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,LIKEandNOT LIKEoperations. #186 - [Test] Add extensive IntegrationTests for ConnectionPersistency. #191
- [Enhancement] Auto-set the
PrimaryFieldvalue of the object after calling theInsert<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
TEntityat class level (moved it to method level). - [Core] Updated the
StatementBuilderSQL Text generation via TableName. - [Core] Supported
Dynamic, ExpandoObject, IDictionary<string, object>, QueryField,IEnumerable<QueryField>and[QueryGroup](/class/querygroup)objects in theExecute<Method>calls. - [Added]
ExecuteScalar<T>andExecuteScalarAsync<T> - [Added] DbField
- [Added] DbFieldCache
- [Removed]
AsyncResultExtractor - [Removed]
StatementBuilderMapItem - [Removed]
FieldDefinition - [Removed]
FieldDefinitionCache - [Renamed]
SqlHelpertoSqlDbHelper - [Renamed]
PrimaryKeyCacheto PrimaryCache. - [Renamed]
PrimaryKeyIdentityCachetoPrimaryIdentityCache - [Optimization] CountAsync operation is now returning the
Task<int>type instead ofTask<object>. - [Optimization] Allow passing of cache expiration time during Query and QueryAll calls.
- [Optimization, Pull-Request] Enumerations
Order,ConjunctionandOperationis 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
DbHelperPluggable 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
StatementBuilderMapItemclass if possible. #139 - [Enhancement] Remove the
ProviderEnumeration. #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
prefixas 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
FieldDefinitioninto DbField. - [Adhoc] Renamed the
FieldDefinitionCacheto DbFieldCache. - [Adhoc] Renamed the
SqlHelpertoSqlDbHelper. - [Adhoc] Renamed the
PrimaryKeyCacheto PrimaryCache. - [Adhoc] Renamed the
PrimaryKeyIdentityCachetoPrimaryIdentityCache. - [Adhoc] Moved the
DbHelpersintoRepoDb.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
IntegrationTestsfor the RawSql ArrayValues #168 - [Test] Add separate
IntegrationTestsfor different Executeparameters. [#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]
Queryusing Expression is failing forContains()==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
CountAsyncoperation return typelonginstead ofobjectwithout 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
paramin the Executeoperation. [#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
whereOrPrimaryKeyargument rather thanprimaryKey(first-level properties).
Added
- Additional Integration Tests for class/object mappings (CRUD).
- Additional Integration Tests for the
DynamicsandExpressionsquery expression forDbConnection, DbRepository and[BaseRepository](/class/baserepository).
RepoDb (v1.8.1)
New Features
- New: Introduced the ExecuteQueryMultiple into the DbRepository.
- New: Introduced the QueryMultiple into the DbRepository.
- New: Introduced the ConversionType to let the users decide the type of the conversions. Accessible via
TypeMapper.ConversionTypeproperty.
Optimizations
- Optimization: Added a class-level checking when identifying the
PrimaryKeyof 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
AsyncResultExtractorto control the extraction of the result in the caller side for allAsyncmethods of the[BaseRepository](/class/baserepository)/DbRepository. - Added: A class named
QueryMultipleRequestto handle the request when calling the QueryMultiple operation. - Added: A class named
CommandArrayParameterto hold the array parameters for Raw SQL statements. - Added: A method named
Resetfor 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
hintsfor both the BatchQuery and Count operation. - Added: An intensive
IntegrationTestsfor all the different data types of the database (SQL Server) (Numbers, Spatials, Strings, Dates, Bytes, Others). - Added: An intensive
IntegrationTestsfor the data types conversions(i.e: String-to-Numbers (vice versa), String-to-Dates (vice versa), etc). - Added: An intensive
IntegrationTestsfor the invalid casings. - Added: An intensive
IntegrationTestsfor all the operations of theDbConnection, DbRepository and[BaseRepository](/class/baserepository)objects.
Fixes
- Fixed: An issue in the
InlineMergeif 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
- Introduced the ExecuteQueryMultiple into the DbRepository.
- Introduced the QueryMultiple into the DbRepository.
- Introduced the ConversionType to let the users decide the strictness of the conversions. Accesible via
TypeMapper.ConversionTypeproperty.
Added
- In the
Asyncmethods, introduced theAsyncResultExtractorclass to control the extraction of the result in the caller side. - Supported BulkInsert for DbRepository with DbDataReader as the parameter.
- Added an
IntegrationTestsfor all the different data types of the database (SQL Server) (Numbers, Spatials, Strings, Dates, Bytes, Others). - Added an
IntegrationTestsfor the data types conversions(i.e: String-to-Numbers (vice versa), String-to-Dates (vice versa), etc). - Added an
IntegrationTestsfor the invalid casings.
Optimizations
- Added a class-level checking when identifying the
PrimaryKeyof a class. - Supported the type conversions(if convertible) when querying the data from the database.
Todo for 1.8.1
- Complete sets of
IntegrationTestsforDbConnection, 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.ExecuteQueryMultipleoperation. - Added a class named
CommandParameterto handle the value of the parameter mapping into the target Type. - Added a class named
QueryGroupTimeMapto support the mapping of the QueryGroup into the Type. - Introduced a
hintsargument in theDbConnection.Queryoperation. - Added class
SqlTableHints. - Supported BulkInsert for DbDataReader.
Removed
- Removed the
Operation.Any. - Removed the
Operation.All. - Removed the
orderByandtopargument in the Query method withprimaryKeyargument. - Removed the
DbConnection.BatchQuerymethod withprimaryKeyargument. - Removed the
DbConnection.Countmethod withprimaryKeyargument. - Removed the
DbConnection.Deletemethod without the WHERE parameter. - Removed the support on
dynamicobject 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
hintsargument in theDbConnection.Queryoperation. - Added class
SqlTableHints.
RepoDb (v1.8.0-beta3)
- Supported BulkInsert for DbDataReader.
- Removed the
Operation.Any. - Removed the
Operation.All.
RepoDb (v1.8.0-beta2)
- Removed the
orderByandtopargument in the Query method withprimaryKeyargument. - Removed the
DbConnection.BatchQuerymethod withprimaryKeyargument. - Removed the
DbConnection.Countmethod withprimaryKeyargument. - Removed the
DbConnection.Deletemethod 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)
AsyncMethod 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
asyncoperations implementation to leverage the awaitable features. - Exposed the
IsForProviderandGetProviderDbConnectionextended 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
asyncoperations implementation to leverage the awaitable features. - Exposed the
IsForProviderandGetProviderDbConnectionextended 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
DbConnectiontype.
RepoDb (v1.7.0-beta2)
- Introduced Expression-Based
Queryfor Connection and Repository Operations - Introduced Support to All (as
Operation.All), Any (asOperation.Any), Contains (asOperation.Like,Operation.NotLike,Operation.In, Operation.NotIn`) - Introduced an Expression-Based
qualiferfield for Merge andInlineMergeoperation - Unit Test updates for
All,Any, andContainsoperation
RepoDb (v1.7.0-beta1)
- Introduced Expression-Based
Queryfor 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
DataEntitybase class (request from the community) - Performance: Added a mechanism to cache the command texts
- Bug Fix: Exception is thrown at
Repository.QuerywhencacheKeyis 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.QuerywhencacheKeyis 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
Queryfeature.
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
PrimaryKeyis 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.ExecuteQuerymethod, 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.ExecuteQuerymethod, 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.ExecuteQuerymethod, 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.ExecuteQuerymethod, 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.ExecuteQuerymethod, 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.InException is Thrown for Array Values - Issue 1: Class Entity
MapAttributePrimaryKeyIdentification
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
PrimaryProperty Caching - Added ClassMapCache object
- Cached the
Mapattribute on every calls
Fixes
- Issue 2:
Operation.InException is Thrown for Array Values - Issue 1: Class Entity
MapAttributePrimaryKeyIdentification
RepoDb (v1.0.9)
- Renamed
ICache.HastoICache.Contains - Removed
ICache.GetAlland implement theIEnumerableinterface 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
orderFieldstoorderBy. - Renamed
ExecuteReaderExto ExecuteReader under Connection object. - Added
Remove()on the ICache - Renamed ICache
Set()method toAdd() - Renamed
DbCacheItemto CacheItem - Remove the
sealedkeyword 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.Inand 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
Traceclass
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.Inand 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
Traceclass
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
DataEntityproperties 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
AsyncCalls (Task.Factory.StartNew)- Added support to auto find (Id) property as prospected
PrimaryKeyif 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
PrimaryAttribute (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
Asyncmethods - 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
PrimaryAttribute (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
Asyncmethods - 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