Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 如何配置ODataAPI以显示来自表或存储过程的结果_Asp.net Mvc_Wcf_Asp.net Mvc 4_Odata - Fatal编程技术网

Asp.net mvc 如何配置ODataAPI以显示来自表或存储过程的结果

Asp.net mvc 如何配置ODataAPI以显示来自表或存储过程的结果,asp.net-mvc,wcf,asp.net-mvc-4,odata,Asp.net Mvc,Wcf,Asp.net Mvc 4,Odata,我将在asp.NETMVC4中创建一个ODataAPI,用于从新表获取数据。当我调用Odata方法并在代码中使用debug时,它会正确地显示数据。但说到浏览器,它会显示空屏幕。 代码中没有显示错误 这是我的Odata方法: [Queryable] public HCPData GetHCPData([FromODataUri] int key) { // return SingleResult.Create(db.HCPDatas.Where(hcpdata =&g

我将在asp.NETMVC4中创建一个ODataAPI,用于从新表获取数据。当我调用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();
    }
[可查询]
公共HCPData GetHCPData([FromODataUri]int键)
{
//返回SingleResult.Create(db.HCPDatas.Where(hcpdata=>hcpdata.Id==key));
IQueryable result=db.HCPDatas.Where(p=>p.CompanyId==key);
返回结果。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());
    }
公共静态无效寄存器(HttpConfiguration配置)
{
//Web API配置和服务
//Web API路由
config.maphttpAttribute路由();
config.Routes.MapHttpRoute(
名称:“DefaultApi”,
routeTemplate:“api/{controller}/{id}”,
默认值:新建{id=RouteParameter.Optional}
);
ODataModelBuilder modelBuilder=新ODataConventionModelBuilder();
//var entitySetConfiguration1=modelBuilder.EntitySet(“作业”);
var entitySetConfiguration1=modelBuilder.EntitySet(“HCPData”);
var customer=modelBuilder.EntityType();
modelBuilder.EntitySet(“HCPData”);
config.MapODataServiceRoute(
routeName:“ODataRoute”,
routePrefix:null,
模型:modelBuilder.GetEdmModel());
}
当我在浏览器中检查空屏幕控制台时,它显示一个错误:“NetworkError:406不可接受--”


请告诉我这个问题的解决办法。提前感谢。

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

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;
}
例子: 让我提出以下要求:

我可以得到以下回应:

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