Summary
Microsoft.OpenApi.OData.Reader 3.2.1 throws System.MissingMethodException at runtime when used with Microsoft.OData.Edm 9.0.0-rc. The published 3.x assembly has IL that calls Microsoft.OData.Edm.ExtensionMethods.GetReturn(Microsoft.OData.Edm.IEdmOperation), but that extension method was removed in OData/odata.net@10c65053e and is therefore absent from the Microsoft.OData.Edm 9.0.0-rc NuGet package.
Affected versions
| Package |
Version |
Status |
Microsoft.OpenApi.OData |
3.2.1 (latest 3.x) |
Calls GetReturn |
Microsoft.OData.Edm |
8.4.3 |
Has GetReturn — works |
Microsoft.OData.Edm |
9.0.0-preview.3 / preview.4 |
Missing GetReturn — breaks |
Microsoft.OData.Edm |
9.0.0-rc |
Missing GetReturn — breaks |
Microsoft.OData.Edm |
main (post-9.0.0-rc) |
GetReturn restored in OData/odata.net@e375dd74e |
Repro
Any model that produces at least one IEdmOperation path (entity sets are enough to make ODataPathProvider.RetrieveBoundOperationPaths walk the operation paths it accumulated and evaluate the _allOperationPaths.Where(...) lambda that calls GetReturn).
var model = builder.GetEdmModel();
var doc = model.ConvertToOpenApi(new OpenApiConvertSettings());
Exception
System.MissingMethodException: Method not found: 'Microsoft.OData.Edm.IEdmOperationReturn Microsoft.OData.Edm.ExtensionMethods.GetReturn(Microsoft.OData.Edm.IEdmOperation)'.
at Microsoft.OpenApi.OData.Edm.ODataPathProvider.RetrieveBoundOperationPaths(OpenApiConvertSettings convertSettings)
at Microsoft.OpenApi.OData.Edm.ODataPathProvider.GetPaths(IEdmModel model, OpenApiConvertSettings settings)
at Microsoft.OpenApi.OData.Edm.ODataContext.LoadAllODataPaths()
...
at Microsoft.OpenApi.OData.EdmModelOpenApiExtensions.ConvertToOpenApi(IEdmModel model, OpenApiConvertSettings settings)
Root cause
OData/odata.net PR 10c65053e ("Add 'ReturnType' default interface property into IEdmOperation, remove 'GetReturn' extension method", Nov 6, 2025) removed the static extension and added a ReturnType default interface member on IEdmOperation instead. The replacement is operation.Return (returns IEdmOperationReturn) — semantically equivalent, but a binary break for callers compiled against 8.x.
That removal shipped in 9.0.0-rc (May 5, 2026). The following day, OData/odata.net@e375dd74e brought GetReturn back as a back-compat extension on top of IEdmOperation.Return, so the next Edm 9.x release after 9.0.0-rc should restore source/binary compatibility with the existing OpenApi.OData 3.x release.
Disassembled callsites in Microsoft.OpenApi.OData.Reader.dll 3.2.1 (8 occurrences in total):
ODataPathProvider.RetrieveBoundOperationPaths (lambda over _allOperationPaths + body)
EdmOperationExtensions (operation-import path enumeration)
OperationHandler.AppendSystemQueryOptions(IEdmFunction)
EdmModelHelper.VisitOperation
- … and a few more in schema-generation paths.
Ask
- Confirm 3.x will pick up the next Edm 9.x release (post-9.0.0-rc) once it ships with
GetReturn restored.
- Plan a 4.x preview of
Microsoft.OpenApi.OData that migrates the GetReturn(...) callsites to the new IEdmOperation.Return member, so consumers can target Edm 9.x without depending on the back-compat shim. Bumping the Microsoft.OData.Edm dependency from >= 8.4.3 to >= 9.x would also unblock consumers from forcibly overriding the floor (which is what surfaces this bug today).
Workaround
For consumers wedged against Edm 9.0.0-rc, the only options are (a) pin Microsoft.OData.Edm back to 8.x, or (b) wait for the next Edm 9.x release where GetReturn is restored.
Happy to PR step 2 if useful — let me know if there's an existing branch or design preference.
Summary
Microsoft.OpenApi.OData.Reader3.2.1 throwsSystem.MissingMethodExceptionat runtime when used withMicrosoft.OData.Edm9.0.0-rc. The published 3.x assembly has IL that callsMicrosoft.OData.Edm.ExtensionMethods.GetReturn(Microsoft.OData.Edm.IEdmOperation), but that extension method was removed inOData/odata.net@10c65053eand is therefore absent from theMicrosoft.OData.Edm9.0.0-rc NuGet package.Affected versions
Microsoft.OpenApi.ODataGetReturnMicrosoft.OData.EdmGetReturn— worksMicrosoft.OData.EdmGetReturn— breaksMicrosoft.OData.EdmGetReturn— breaksMicrosoft.OData.EdmGetReturnrestored inOData/odata.net@e375dd74eRepro
Any model that produces at least one
IEdmOperationpath (entity sets are enough to makeODataPathProvider.RetrieveBoundOperationPathswalk the operation paths it accumulated and evaluate the_allOperationPaths.Where(...)lambda that callsGetReturn).Exception
Root cause
OData/odata.netPR10c65053e("Add 'ReturnType' default interface property into IEdmOperation, remove 'GetReturn' extension method", Nov 6, 2025) removed the static extension and added aReturnTypedefault interface member onIEdmOperationinstead. The replacement isoperation.Return(returnsIEdmOperationReturn) — semantically equivalent, but a binary break for callers compiled against 8.x.That removal shipped in
9.0.0-rc(May 5, 2026). The following day,OData/odata.net@e375dd74ebroughtGetReturnback as a back-compat extension on top ofIEdmOperation.Return, so the next Edm 9.x release after 9.0.0-rc should restore source/binary compatibility with the existing OpenApi.OData 3.x release.Disassembled callsites in
Microsoft.OpenApi.OData.Reader.dll3.2.1 (8 occurrences in total):ODataPathProvider.RetrieveBoundOperationPaths(lambda over_allOperationPaths+ body)EdmOperationExtensions(operation-import path enumeration)OperationHandler.AppendSystemQueryOptions(IEdmFunction)EdmModelHelper.VisitOperationAsk
GetReturnrestored.Microsoft.OpenApi.ODatathat migrates theGetReturn(...)callsites to the newIEdmOperation.Returnmember, so consumers can target Edm 9.x without depending on the back-compat shim. Bumping theMicrosoft.OData.Edmdependency from>= 8.4.3to>= 9.xwould also unblock consumers from forcibly overriding the floor (which is what surfaces this bug today).Workaround
For consumers wedged against Edm 9.0.0-rc, the only options are (a) pin
Microsoft.OData.Edmback to 8.x, or (b) wait for the next Edm 9.x release whereGetReturnis restored.Happy to PR step 2 if useful — let me know if there's an existing branch or design preference.