如何为表或存储过程的show result配置Odata api

时间:2015-10-09 11:13:28

标签: asp.net-mvc wcf asp.net-mvc-4 odata

我将在asp.net mvc 4中创建一个Odata api,用于从新表中获取数据。当我调用Odata方法并在代码中使用debug它正确显示数据。但是当涉及到浏览器时,它显示空屏幕。 代码中没有显示错误。

这是我的Odata方法:

[Queryable]
    public HCPData GetHCPData([FromODataUri] int key)
    {
      //  return SingleResult.Create(db.HCPDatas.Where(hcpdata => hcpdata.Id == key));
        IQueryable<HCPData> result = db.HCPDatas.Where(p => p.CompanyId == key);
        return result.FirstOrDefault();
    }

这是我的WebApiConfig方法:

 public static void Register(HttpConfiguration config)
    {
        // Web API configuration and services

        // Web API routes
        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

         ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
        //var entitySetConfiguration1 = modelBuilder.EntitySet<Job>("Job");
         var entitySetConfiguration1 = modelBuilder.EntitySet<HCPData>("HCPData");


         var customer = modelBuilder.EntityType<HCPData>();

         modelBuilder.EntitySet<HCPData>("HCPData");


        config.MapODataServiceRoute(
            routeName: "ODataRoute",
            routePrefix: null,
            model: modelBuilder.GetEdmModel());
    }

当我在浏览器中检查空屏幕的控制台时,它显示错误:&#34; NetworkError:406 Not Acceptable - http://localhost:50369/HCPData?key=11&#34;

请让我知道问题的解决方案。提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果您按如下方式更改控制器,结果如何:

public class HCPDataController : ODataController
{
   [EnableQuery]
   public HCPData GetHCPData([FromODataUri] int key)
   {
    ...
   }
}

[我的样本]

因为在我这边,如果我按如下方式实现控制器,它可以工作:

[EnableQuery]
public HCPData GetHCPData([FromODataUri] int key)
{
     var data = new HCPData
     {
         CompanyId = 2,
         Name = "Key = " + key
     };

     return data;
}

实施例

让我发出以下请求:

enter image description here

我可以得到以下回复:

{
  "@odata.context":"http://localhost:62591/odata/$metadata#HCPData/$entity","CompanyId":2,"Name":"Key = 11"
}