如何找到OData edm模型类型到clr类型的映射?

时间:2014-06-10 19:12:37

标签: c# .net asp.net-mvc asp.net-web-api odata

我的数据层没有公开IQueryable。我仍然希望能够对数据进行排序。我的API具有这样的功能,但我需要确定需要排序的内容。假设我配置了模型,例如:

ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<Airline>("Airlines");
modelBuilder.EntitySet<FlightLeg>("Legs");

现在,在控制器中,我能够获得OdataQueryOptions并了解所请求的edm模型类型/属性排序。我需要完成的是获取用于配置的CLR类型的属性的PropertyInfo,例如Airline.PlaneModel。

我很难通过API获取元数据,但没有成功。请帮忙。

1 个答案:

答案 0 :(得分:5)

在控制器中试用此代码段:

        //using Microsoft.Data.Edm
        IEdmModel edmModel = Request.ODataProperties().Model;
        ClrTypeAnnotation annotation = edmModel.GetAnnotationValue<ClrTypeAnnotation>(edmSchemaType);
        if (annotation != null)
        {
            return annotation.ClrType;
        }