如何防止ODataConventionModelBuilder自动公开所有派生类型的元数据?

Eug*_*kov 8 c# odata asp.net-web-api2

我正在使用ODataConventionModelBuilder为Web API OData服务构建Edm Model,如下所示:

ODataModelBuilder builder = new ODataConventionModelBuilder();

builder.Namespace = "X";

builder.ContainerName = "Y";

builder.EntitySet<Z>("Z");

IEdmModel edmModel = builder.GetEdmModel();
Run Code Online (Sandbox Code Playgroud)

Z类位于一个组件中,并且存在来自Z的公共Q位于不同的组件中.

ODataConventionModelBuilder将生成包含Q(以及其他派生类)定义的Edm Model,并将使用服务元数据公开它.在我们的案例中这是不可取的.

当派生类无法访问(例如定义为内部)这样的问题时,肯定不存在.

有没有办法强制ODataConventionModelBuilder不自动公开所有派生类型的元数据?

Yi *_*SFT 8

这应该工作:

ODataConventionModelBuilder builder = new ODataConventionModelBuilder();

builder.Namespace = "X";

builder.ContainerName = "Y";

builder.EntitySet("Z");

builder.Ignore<Q>();

IEdmModel edmModel = builder.GetEdmModel();
Run Code Online (Sandbox Code Playgroud)