Releases: 0x1000000/SqExpress
Releases · 0x1000000/SqExpress
v1.0.0
New Features
- Retrieving of database tables metadata + comparison
- MERGE expression builder
- Table Value Functions
- All aggregate functions now can be used with
OVER(...)
- SqDatabase can query IAsyncEnumerable<ISqRecord> (for .Net 6)
- SqDatabase supports async version for all I/O operation (for .Net 6)
expr.SyntaxTree().ModifyDescendants(modifier)
new method that returns object of the same type.- arguments of OR and AND operators now can be nullable (for .Net 6)
- DateDiff function + polyfills for Postgresql and MySql
GetParentTables()
for TableBase()
Breaking Changes
- Values Constructor in MYSQL now is implemented through UNION ALL
- .Net Framework is not supported anymore, however, .Net Standard 2.0 is still supported
- .Net less than 6 now use .Net Standard 2.0 which does not have some functions
- SyntaxTreeActions structure now has a generic parameter
v1.0.0-beta.2
- Retrieving of database tables metadata + comparison
- Table Value Functions
v1.0.0-beta
New Features
- Retrieving of database tables metadata + comparison (works only for MS SQL so far)
- MERGE expression builder
Breaking Changes
- Values Constructor in MYSQL now is implemented through UNION ALL
- .Net Framework is not supported anymore, however, .Net Standard 2.0 is still supported
v0.4.1
v0.4.0
0.4.0.0
New Features
- CTE (see readme.md)
SqQueryBuilder.ValueQuery(...)
- It allows using a sub-query as a value (e.g. in boolean expressions or a column)- Powershell commandlets Gen-Tables and Gen-Models in Package Manager Console
- Syntax Tree WalkThrough method has a new overload with a link to parent node
- SqModels now have new methods: GetColumnsWithPrefix, ReadWithPrefix, IsNull, IsNullWithPrefix
Breaking Changes
- Concat helper was renamed to Combine (to avoid a conflict with Linq)
v0.3.3
v0.3.2
v0.3.1
0.3.1.0
New Features
- the DTO code-generator now has a parameter that allows generating C# records:
--model-type ImmutableClass|Record
or<SqModelGenType>ImmutableClass|Record</SqModelGenType>
; - "CheckExistenceBy" in the Insert data builder what adds WHERE EXISTS(...) to a Insert source to avoid duplicates inserting;
- ExistsIn<TTable>(..predicate..) ... - Helper that returns boolean expression
EXISTS(SELECT 1 FROM TTable WHERE ..Predicate..)
- QueryPage extension for OffsetFetch queries.
Bugfix
- When some column(s) in values constructor contains only nulls, sqexpress now adds an explicit type cast for the first cell e.g.
CAST(NULL as int)
- MergeDataInto now allows only keys mapping unless WhenMatchThenUpdate is defined (without additional updates)
- Derived tables now can have 0 declared columns
v0.3.0
New Features
- "ReadAsString(recordReader:ISqDataRecordReader): string" and "FromString(value: string?): ExprLiteral" are added to TableColumn. They allow performing mass export/import of database data.
- Lt Gt operators overload between columns
- ColumnMeta is public now
- Identity Insert
- SqModelSelectBuilder - Fluent API that allows quickly get a tuple of DTO SqModels from tables join
- Column method "Read" now has an overload that receives an ordinal index
- "ReadOrdinal" was added to ISqModelReader
- ThenBy for ExprOrderItem andExprOrderBy
- ISqDatabase has a new overload for Query which receives an asynchronous record handler
- Build targets to run model code-generation
- new option "--clean-output" for the model code-generation tool
Breaking Changes
- ISqModelDerivedReaderReader was removed. ISqModelReader was slightly changed;
- CodeGenUtil - typo fixed in parameter "-v quiet"
v0.2.0
New Features
- "MERGE" polyfill for PostgreSql and MYSQL
- ISqModelReader;ISqModelUpdater (--rw-classes key in the code-generation utility)
- SqModel for temporary and derived tables
- Keep class modifiers in the code generation
- New expression modifiers: AddOrderBy, AddOffsetFetch, JoinAsAnd, JoinAsOr
- New query extension: QueryDictionary
- ISqDatabase.BeginTransactionOrUseExisting(out bool isNewTransaction);
- SyntaxTree().Descendants(); SyntaxTree().DescendantsAndSelf();
- UpdateData builder
Bug Fix
- ISqDatabase.BeginTransaction now does not throw an exception if connection was not opened (it is automatically opened on the first request)
- Duplicates in model code-generation when one model is used for several tables
Breaking Changes
- Some new methods were added in some public interfaces, so if you have own implementations then they need to be extended.