我有一个使用最新版本的RESTier网站。我使用EF 6从数据库创建的所有实体和视图都可以正常工作,但我似乎无法获得我带来的存储过程。由于文档有点稀疏,我不确定是否需要实现除服务的基本启动之外的任何内容。
通过Postman发送此URI时,我发现未找到404错误: http://192.168.1.20:60666/api/MIC_REST/up_BomAssemParts_s_ByJobID_FmNumber_WorkArea_TEST(jobID=252,fmNumber = 98,workAreas ='A13,D12,A3,A9,A7,A10')
我基本上有以下服务的库存设置。任何有关它是否可能是URI或设置的帮助将不胜感激。
WebApiConfig
:
public static class WebApiConfig
{
public async static void Register(HttpConfiguration config)
{
config.EnableSystemDiagnosticsTracing();
config.Filter().Expand().Select().OrderBy().MaxTop(1000).Count();
await config.MapRestierRoute<EntityFrameworkApi<MICdB>>(
"MIC_REST", "api/MIC_REST", new Microsoft.Restier.Publishers.OData.Batch.RestierBatchHandler(GlobalConfiguration.DefaultServer));
}
}
public virtual ObjectResult<up_BomAssemParts_s_ByJobID_FmNumber_WorkArea_Result_TEST> up_BomAssemParts_s_ByJobID_FmNumber_WorkArea_TEST( Nullable<int> jobID, Nullable<int> fmNumber, string workAreas)
{
var jobIDParameter = jobID.HasValue ?
new ObjectParameter("JobID", jobID) :
new ObjectParameter("JobID", typeof(int));
var fmNumberParameter = fmNumber.HasValue ?
new ObjectParameter("FmNumber", fmNumber) :
new ObjectParameter("FmNumber", typeof(int));
var workAreasParameter = workAreas != null ?
new ObjectParameter("WorkAreas", workAreas) :
new ObjectParameter("WorkAreas", typeof(string));
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<up_BomAssemParts_s_ByJobID_FmNumber_WorkArea_Result_TEST>("up_BomAssemParts_s_ByJobID_FmNumber_WorkArea_TEST", jobIDParameter, fmNumberParameter, workAreasParameter);
}
public partial class up_BomAssemParts_s_ByJobID_FmNumber_WorkArea_Result_TEST
{
public string BomAssemShipMark { get; set; }
public string CurrentLocation { get; set; }
public int Quantity { get; set; }
public string PlPiecemark { get; set; }
public string MatSizeText { get; set; }
public string LengthText { get; set; }
public string GradeDescription { get; set; }
public string PlPiecemarkPrefix { get; set; }
public int PlPiecemarkSuffix { get; set; }
public string PlCodes { get; set; }
public string PlPremark { get; set; }
public Nullable<int> FmNumber { get; set; }
}
答案 0 :(得分:0)
在试图让ODataController工作之后,我已经放弃了,并放弃使用Apicontroller,最终实现起来非常简单。使用ODataController,我永远无法获得工作的URL,或者如果我尝试添加oDataRoute,则总会产生错误。使用ResTier发布的所有相当无用的示例似乎是荒谬的,人们期望的一个真实世界示例(存储过程返回用于UI视图目的的非实体数据列表)似乎不存在。 ResTier似乎对EntitySets非常有用,但我发现自己陷入困境让我质疑它(或者Odata不确定故障在哪里)。哦,好吧,下面得到的数据......现在找到一个压缩来修复额头上的贴边....
[System.Web.Http.RoutePrefix("spapi/MIC_REST")]
public class SPController :ApiController
{
private MICdB db = new MICdB();
[System.Web.Http.Route("part/{jobID:int}/{fmNumber:int}/{workAreas}")]
// [EnableQuery]
public List<up_BomAssemParts_s_ByJobID_FmNumber_WorkArea_Result> GetPartsLists([FromODataUri]int jobID, [FromODataUri]int fmNumber, [FromODataUri]string workAreas)
{
return db.up_BomAssemParts_s_ByJobID_FmNumber_WorkArea_TEST(jobID, fmNumber, workAreas).ToList();
}
}