Skip to content

EF Core 8 Support #143

@ChrisJollyAU

Description

@ChrisJollyAU

With the release of .Net RC 1 and EF Core 8 it is time to start work on a compatible version of EFCore.Jet

Alpha 1 is now out and available for testing. Most things should be working and I don't believe there is any significant regressions from v7

Some notable changes are:

  • Updated to .Net 8. Note that EFCore requires .Net 8 and is not able to run on a lower version
  • Updated tests to match. Generally along the lines of different optimizations applied
  • Uses the new way of doing StartwWith/EndsWith/Contains
    • Previously used to get a substring the length of the searched for string and compared on that. Now translates into a LIKE pattern
  • Fix formatting of a single byte in the SQL string literal
  • Using DISTINCT in the same select as TOP in Jet is mutually exclusive. Hence push the SELECT TOP statement into a subquery
  • Fix handling some versions of our generated SELECT TOP statement when it had the sum of 2 numeric constants
  • When generating sets (UNION, INTERSECT) it didn't get to the part where it generated the SQL for the Alias
  • When translating IndexOf, it used the INSTR Sql method. According to the docs the first parameter is the start index and is optional but found some tests that didn't like that. Including all parameters fixed that

There is still some work to go but some new EF Core 8 features do work. Some notes:

  • Complex types do work
  • DateOnly/TimeOnly still need to be implemented
  • Json support is obviously not working (Jet has no concept). Might be doable to handle this within EFCore.Jet by having the column has a text/memo with the full Json, the select/update statements read/write the full json but within EFCore.Jet we process it to return the required portion (or update).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions