SkillAgentSearch skills...

EntityFrameworkCore.OpenEdge

Entity Framework Core provider for Progress OpenEdge

Install / Use

/learn @alexwiese/EntityFrameworkCore.OpenEdge
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

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.7

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.

Related Skills

View on GitHub
GitHub Stars34
CategoryData
Updated1mo ago
Forks21

Languages

C#

Security Score

95/100

Audited on Feb 12, 2026

No findings