Skip to content

v3.7.0 — Stored Procedure Execution

Latest

Choose a tag to compare

@piranout piranout released this 29 Jun 17:41
· 42 commits to master since this release

Minor release. Published to NuGet as Funcular.Data.Orm 3.7.0.

Added

  • Stored procedure executionExecProcedure<T>, ExecScalar<TResult>, and ExecNonQuery (each with async counterparts) on IOrmDataProvider. Parameters as an anonymous/typed object (input-only) or params SqlParam[] (supports output/INOUT params; (name, value) tuples convert implicitly to SqlParam). Result sets map through the same Query<T> pipeline; procedure names resolve by explicit argument, the new [Procedure] attribute, or convention (cached).
  • Capability-based per provider:
    • SQL Server — full (CommandType.StoredProcedure; OUTPUT params; sys.procedures lookup).
    • MySQL — full (CALL; OUT/INOUT params; information_schema.routines lookup).
    • PostgreSQL — partial: ExecNonQuery/ExecScalar via CALL (INOUT returned and back-populated); ExecProcedure<T> throws with guidance (use a FUNCTION RETURNS TABLE).
    • SQLite — not supported; every Exec* throws NotSupportedException.
  • SqlParam type and [Procedure] attribute in Funcular.Data.Orm.Core.
  • ~74 tests: SQL Server 22, MySQL 22, PostgreSQL 7, SQLite 6 negative, plus 17 overload-resolution/guard unit tests; procedure DDL added to each provider's test database.

Changed

  • IOrmDataProvider gained the Exec* members. Code deriving from OrmDataProvider is unaffected (virtual defaults). This is source-breaking only for external code that implements IOrmDataProvider directly — consistent with prior interface evolution (ISqlDialect in 3.2.1).

Full changelog: https://github.com/FuncularLabs/Funcular.FunkyOrm/blob/master/Changelog.md