Skip to content

alexwiese/EntityFrameworkCore.OpenEdge

Repository files navigation

EntityFrameworkCore.OpenEdge

NuGet Version License: Apache-2.0

EntityFrameworkCore.OpenEdge is an Entity Framework Core 9 provider that lets you target Progress OpenEdge databases via ODBC.

⚠️ Status: This library is under active development. While it is already used in production scenarios, you may still encounter bugs or missing edge-cases. Please open an issue if you run into problems.


Quick Start

Install

dotnet add package EntityFrameworkCore.OpenEdge --version 9.0.6

DSN-less connection

optionsBuilder.UseOpenEdge(
    "Driver=Progress OpenEdge 11.7 Driver;" +
    "HOST=localhost;PORT=10000;UID=<user>;PWD=<password>;DIL=1;Database=<db>");

Using a DSN

optionsBuilder.UseOpenEdge("dsn=MyDb;password=mypassword");

Custom schema (defaults to "pub")

optionsBuilder.UseOpenEdge(
    connectionString: "dsn=MyDb;password=mypassword",
    defaultSchema: "myschema");

Reverse-engineer an existing database

Scaffold-DbContext "dsn=MyDb;password=mypassword" EntityFrameworkCore.OpenEdge -OutputDir Models

Feature Matrix (EF Core 9)

Area Status Notes
Queries SELECT, WHERE, ORDER BY, GROUP BY, paging (Skip/Take), aggregates
Joins / Include INNER JOIN, LEFT JOIN, filtered Includes
String operations Contains, StartsWith, EndsWith, Length
CRUD INSERT, UPDATE, DELETE – one command per operation (OpenEdge limitation)
Scaffolding Scaffold-DbContext
Nested queries Skip/Take inside sub-queries (new in 9.0.4)
DateTime literal support { ts 'yyyy-MM-dd HH:mm:ss' } formatting
Date/Time operations DateOnly properties (Year, Month, Day, DayOfYear, DayOfWeek); methods (FromDateTime, AddDays, AddMonths, AddYears)

OpenEdge Gotchas

  • Primary keys – OpenEdge doesn’t enforce uniqueness. Use rowid or define composite keys
  • No batching / RETURNING – each modification executes individually; concurrency detection is limited.

See the OpenEdge SQL Reference for database specifics.

Legacy 1.x Line (netstandard2.0 / EF Core 2.1)

The original 1.x versions target netstandard 2.0 and EF Core 2.1.
They remain on NuGet for applications that cannot yet migrate to .NET 8/9.

Package Framework EF Core Install
1.0.11 (latest stable) netstandard2.0 2.1.x dotnet add package EntityFrameworkCore.OpenEdge --version 1.0.11
1.0.12-rc3 netstandard2.0 2.1.x dotnet add package EntityFrameworkCore.OpenEdge --version 1.0.12-rc3

The 1.x branch is feature-frozen. New development happens in the 9.x line.

Contributing & Development

We welcome pull requests — especially back-ports to older EF Core branches and additional translator implementations.

  • Testing requirements: EF Core providers are expected to pass the EF Core provider specification tests. Our current test harness is minimal and may not cover all cases. Contributions that add missing tests (or implement the snadard testing flow for database providers) are highly appreciated.
  • Bug reports: Please include a runnable repro or failing test where possible.

For a deeper dive into the architecture (query / update pipelines, type mapping, etc.) browse the source under src/EFCore.OpenEdge.

License

Apache-2.0 – see LICENSE.