如何在MVC4中使用OData服务?

时间:2013-07-16 06:04:09

标签: asp.net asp.net-mvc-4 asp.net-web-api odata

  

在我的项目中,CloudMiddleware有一个与API,PayPal,Twilio等API集成的服务。我有SOAP,REST和AJAX请求的端点,我也想使用ODATA灵活性,因为请求是通过HTTP使用url本身。这可能吗?

2 个答案:

答案 0 :(得分:1)

  

假设您有一个服务控制器。每个服务都是具有Id和Description的类的实例。服务类具有Id和Description属性。

public class ServiceController : ApiController
{
    // GET api/service
    public IEnumerable<Service> Get()
    {
        return new Service[]
                    {
                        new Service { Id = 1, Description = "This is my service 1." },
                        new Service {Id = 2, Description = "This is my service 2."},
                        new Service {Id = 3, Description = "This is my service 3."}
                    };
    }

    // GET api/service/5
    public Service Get(int id)
    {
        return null;
    }

    // POST api/service
    public void Post([FromBody]string value)
    {
    }
}

public class  Service 
{
    public int Id { get; set; }
    public string Description { get; set; }
}
  

为了通过OData使用控制器的服务,你必须在方法“Get”中使用属性[Queryable]并将返回类型更改为IQueryable,并且所有准备就绪!!!!!,如下所示:

public class ServiceController : ApiController
{
    // GET api/service
    [Queryable(ResultLimit = 10)]
    public IQueryable<Service> Get()
    {
        return new Service[]
                    {
                        new Service { Id = 1, Description = "This is my service 1." },
                        new Service {Id = 2, Description = "This is my service 2."},
                        new Service {Id = 3, Description = "This is my service 3."}
                    }.AsQueryable();
    }

    // GET api/service/5
    public Service Get(int id)
    {
        return null;
    }

    // POST api/service
    public void Post([FromBody]string value)
    {
    }
}
  

属性 Queryable 具有属性 ResultLimit ,它用于表示可以保存结果的最大数量的服务实例。它还具有属性 LambdaNestingLimit HandleNullPropagation EnsureStableOrdering

     

对/ api / service的请求?$ top = 2返回一个Json响应:

     

{{“Id”:“1”,“说明”:“这是我的服务1.”},{“Id”:“2”,“说明”:“这是我的服务2.”}}

答案 1 :(得分:0)

是的,您可以使用ASP.NET Web API或WCF数据服务在ASP.NET MVC项目中创建OData端点。前者为您提供了更多的控制和灵活性来实现端点。