Minor release. Published to NuGet as Funcular.Data.Orm 3.7.0.
Added
- Stored procedure execution —
ExecProcedure<T>,ExecScalar<TResult>, andExecNonQuery(each with async counterparts) onIOrmDataProvider. Parameters as an anonymous/typed object (input-only) orparams SqlParam[](supports output/INOUT params;(name, value)tuples convert implicitly toSqlParam). Result sets map through the sameQuery<T>pipeline; procedure names resolve by explicit argument, the new[Procedure]attribute, or convention (cached). - Capability-based per provider:
- SQL Server — full (
CommandType.StoredProcedure;OUTPUTparams;sys.procedureslookup). - MySQL — full (
CALL;OUT/INOUTparams;information_schema.routineslookup). - PostgreSQL — partial:
ExecNonQuery/ExecScalarviaCALL(INOUT returned and back-populated);ExecProcedure<T>throws with guidance (use aFUNCTION RETURNS TABLE). - SQLite — not supported; every
Exec*throwsNotSupportedException.
- SQL Server — full (
SqlParamtype and[Procedure]attribute inFuncular.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
IOrmDataProvidergained theExec*members. Code deriving fromOrmDataProvideris unaffected (virtual defaults). This is source-breaking only for external code that implementsIOrmDataProviderdirectly — consistent with prior interface evolution (ISqlDialectin 3.2.1).
Full changelog: https://github.com/FuncularLabs/Funcular.FunkyOrm/blob/master/Changelog.md