.NET Odata 7.2>动态IEdmModel使用依赖注入

时间:2018-03-08 21:19:34

标签: dynamic frameworks odata entity

使用.NET oData 7.2构建动态odata端点。我为每个请求使用DI每个范围请求注入IEdmModel - 这样我的动态端点可以更改每个URL的模型,即/ odata / modela / $ metadata和/ odata / modelb / $ metadata返回两个不同的模型。

灵感来自https://github.com/OData/ODataSamples/tree/master/WebApi/v4/DynamicEdmModelCreation

使用以下作品注入模型:

.AddService<IEdmModel>(Microsoft.OData.ServiceLifetime.Singleton, sp => GetModelBasedOnUrl());

如果我将生命周期从singleton更改为scoped(允许每个请求的自定义模型),则EdmModel会因为没有缓存而呈现错误;调用异常

"message": "An resource with type 'ns.ModelA' was found, but it is not assignable to the expected type 'ns.ModelA'. The type specified in the resource must be equal to either the expected type or a derived type.",
            "type": "Microsoft.OData.ODataException",
            "stacktrace": "   at Microsoft.OData.ValidationUtils.ValidateEntityTypeIsAssignable(IEdmEntityTypeReference expectedEntityTypeReference, IEdmEntityTypeReference payloadEntityTypeReference)\r\n   at Microsoft.OData.WriterValidator.ValidateTypeReference(IEdmTypeReference typeReferenceFromMetadata, IEdmTypeReference typeReferenceFromValue)\r\n

看起来ODataWriterCore需要一个持久的数据源。

任何人都有一个解决方案如何在Odata请求管道中创建服务生命周期单身?

0 个答案:

没有答案