Commit Graph

497 Commits (lauxjpn-md-change-test-1)
 

Author SHA1 Message Date
Christopher Jolly 6963a165e5 The result of the Round function is never null 3 years ago
Christopher Jolly c8e109fb94 Jet can't candle a left join straight after a cross join. We have to push the cross join specifically down into its own subquery and then do a left join on that 3 years ago
Christopher Jolly 6230db2803 Merge branch 'master' of https://github.com/bubibubi/EntityFrameworkCore.Jet 3 years ago
Christopher Jolly 61b277d11c Update dependencies and some test fixes 3 years ago
Christopher Jolly 256163dcf7
Merge pull request #138 from 0xced/JetConnectionStringBuilder
Introduce a new typed JetConnectionStringBuilder
3 years ago
Cédric Luthi 83c29e4c43 Introduce a new typed JetConnectionStringBuilder
This makes it easier to use than the extensions (EntityFrameworkCore.Jet.Data.DbConnectionStringBuilderExtensions) with Get/Set methods.

With the new `JetConnectionStringBuilder` class:

```csharp
var csb = new JetConnectionStringBuilder(DataAccessProviderType.OleDb)
{
    Provider = "Microsoft.ACE.OLEDB.12.0",
    DataSource = @"C:\myFolder\myAccessFile.accdb",
    DatabasePassword = "hunter2",
};
var connectionString = csb.ConnectionString;
```

Without the new `JetConnectionStringBuilder` class:

```csharp
var csb = new OleDbConnectionStringBuilder();
csb.SetProvider("Microsoft.ACE.OLEDB.12.0");
csb.SetDataSource(@"C:\myFolder\myAccessFile.accdb");
csb.SetDatabasePassword("hunter2");
var connectionString = csb.ConnectionString;
```
3 years ago
Christopher Jolly 0dff2ea1ca
Merge pull request #137 from 0xced/SupportedOSPlatform
Make EntityFrameworkCore.Jet available on `net6.0`
3 years ago
Cédric Luthi c795ce6228 Make EntityFrameworkCore.Jet available on `net6.0`
By using `[SupportedOSPlatform("windows")]` at assembly level instead of targeting `net6.0-windows`.

This will enable taking a dependency on the EntityFrameworkCore.Jet* NuGet packages on Linux and macOS. The consumer of EntityFrameworkCore.Jet can then decide how to handle [CA1416][1] either by adding `[SupportedOSPlatform("windows")]`, by targeting `net6.0-windows` or by testing `OperatingSystem.IsWindows()` at runtime.

[1]: https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1416
3 years ago
Christopher Jolly 1e73673f05 Set RC 1 3 years ago
Christopher Jolly d19854b3e6 update Dependencies 3 years ago
Christopher Jolly 12aca42198 Add option to use the normal short text type when mapping against an unbounded System.String instead of long text/memo. Jet has limitations when using memo (e.g. joins are not supported) 3 years ago
Christopher Jolly 950089a113 Set the precision to be maximum of 28 (Jet limit).
When using property.HasConversion<decimal>() the default for EF Core is with precision 38 and scale 17 which is passed Jet's limit
3 years ago
Christopher Jolly acc3fd5223 Revert "Set the precision to be maximum of 28 (Jet limit)."
This reverts commit a1904bf113.
3 years ago
Christopher Jolly a1904bf113 Set the precision to be maximum of 28 (Jet limit).
When using property.HasConversion<decimal>() the default for EF Core is with precision 38 and scale 17 which is passed Jet's limit
3 years ago
Christopher Jolly dc049d804d Do the same clr type check when mapping "text" as what we do for other store type mappings. This allows conversions do work better (e.g. originally a mappingInfo with a System.Char type was passed in with store type of "text" and a variable length or unbounded string type was returned but with clr type of System.String. Going with the extra checked returns null and gets EF Core to find a converter and then do the mapping again on the converted type 3 years ago
Christopher Jolly ee54f1fac0 Use MidB/InstrB for the byte versions. (still doesnt produce correct results yet) 3 years ago
Christopher Jolly 7de8811773 Some tests adjustments 3 years ago
Christopher Jolly ee30910fa9 Update the ValueGeneratorSelector to current ef core style. Don't rely on sequential guid's as Jet doesn't order them properly (treats them as string as sorts them numerically/alphabetically) 3 years ago
Christopher Jolly 0eb8baefa9 Add a clause/filter to the index to ignore nulls 3 years ago
Christopher Jolly 306585af13 When dealing with convert, if we don't have a specific conversion function, try just send the original operand and let Jet work with the types. Seems to be fairly lenient 3 years ago
Christopher Jolly 6cb1748237 Remove sbyte from clr mappings. Not needed as EF Core will use automatic conversions for those types. EF Core SQL Server behaves the same 3 years ago
Christopher Jolly 9489bc4564 Jet seems to output bytes only as an array. so a single byte becomes a byte[1] array. Return the first byte of that array in this instance 3 years ago
Christopher Jolly 3b0bc7d5ad Fix the GetValueGenerated function. Was not being called and as such for an identity the ValueGenerated.OnAdd was not being set 3 years ago
Christopher Jolly 89515bb01a Fix some tests to catch DbException and its derived types. Thus catching OdbcException or OleDbException depending on which provider the tests were using 3 years ago
Christopher Jolly b23483ce45 Test fixes for escaping wild chars 3 years ago
Christopher Jolly 78f3dbae15 Use our own Byte type mapping for generating the correct string literal 3 years ago
Christopher Jolly bc5b51fa4a Fix check against typeof JetBoolTypeMapping. For the tests Everything is Bytes/Strings all type mappings are the same which makes the check not behave correctly 3 years ago
Christopher Jolly f15d60aaab Fix escaping wild chars. Use the correct form to escape. Also the LIKE clause does nt have an ESCAPE clause to set the escape char so set that to null 3 years ago
Christopher Jolly ca05f94f6d Adjust some SQL results for the modification to the order by boolean 3 years ago
Christopher Jolly 73ef68188f Ordering of boolean: Rather order by the NOT expression rather than change the ascending or descending order. NULL values are handled in the correct order now
Division: If the result of the binary is meant to be integer, use the Jet binary divide operatior '\'
3 years ago
Christopher Jolly aa6b5afb9f Fix some more tests 3 years ago
Christopher Jolly 87aa0dbe93 Fix incorrect check for whether ordering expression is boolean typeexpression if it is a boolean type. 3 years ago
Christopher Jolly 03579d380c Add a JetGuidTypeMapping class. We need to override the template for the SQL literal. Jet uses the format with th curly braces at the beginning and end. Default (and same as sql server) is the format without curly braces 3 years ago
Christopher Jolly 8540a7cc17 Add extra Gear to the Reports collection of an Officer. We had adjusted a null foreing key to make it work and this makes the expected data match the actual 3 years ago
Christopher Jolly 1b9eaab03f Beta 1 3 years ago
Christopher Jolly 17ca1f6992 Fix tests related to TimeSpan 3 years ago
Christopher Jolly d7033125be Properly read a TimeSpan value from the database.
Add member translator for timespan so SQL works
3 years ago
Christopher Jolly 096a0955e2 Add JetQueryableMethodTranslatingExpressionVisitorFactory if needed to override anything from it 3 years ago
Christopher Jolly e01686d4b5 MID doesn't allow a null value for the length parameter. Add a IIF wrapper around it if that argument is marked as nullable.
Added here instead of stringmethodtranslator as we need the nullability optimizations on the sqlfunctionexpression. When wrapped in a caseexpression we get some different optimizations. Produces the correct result on the test case but is different to SQL Server. This way we keep it closer to SQL Server
3 years ago
Christopher Jolly 9355ddb293 LEN propagates nullability 3 years ago
Christopher Jolly a11ca0198d Add SqlTranslatingExpressionVisitor:
- Handles array index of byte[] (currently not working)
- Returns a not translated if we have arithmetic between dates/times. See Projection_containing_DateTime_subtraction in NorthwindSelectQueryJetTest
3 years ago
Christopher Jolly 2b0f468421 Fix conversion translator: only need to translate Convert.To... functions. Was trying to convert other tostring methods and was picking the methods that required an argument which was typically the tostring functions with arguments of the format string or the format provider 3 years ago
Christopher Jolly a2db5066e1 The object tostring translator was doing it on the server. It needs to be handled on the client to get the actual name of the enum rather than its int value
Also handles the boolean special cases
3 years ago
Christopher Jolly d594e7cf25 More test fixes 3 years ago
Christopher Jolly b002c884c7 Gears of War tests now run.
Also updated the baseline SQL
3 years ago
Christopher Jolly b107b2235d SqlExpressionSimplifyingExpressionVisitor simplifies nested coalesce calls into the form of COALESCE(arg1,arg2,...argn)
Jet doesn't have any equivalent so unroll into nest iif calls
3 years ago
Christopher Jolly fca911d6c0 Set 7.0 alpha 2 3 years ago
Christopher Jolly 3e376ff106 Fix byte array stuff 3 years ago
Christopher Jolly ccef0d4f49 Add Math functions to translate Floor and Ceiling 3 years ago
Christopher Jolly 458197e582 Pass the current dataaccessproviderfactory type to CreateDatabase. Preference will take place using this type before going to the default in case it can't find the type via the connection string.
Fixes #135 and #122
3 years ago