Asp.net mvc 如何配置ODataAPI以显示来自表或存储过程的结果
我将在asp.NETMVC4中创建一个ODataAPI,用于从新表获取数据。当我调用Odata方法并在代码中使用debug时,它会正确地显示数据。但说到浏览器,它会显示空屏幕。 代码中没有显示错误 这是我的Odata方法: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
[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"
}