1

我有一个使用最新版本的 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; }
}
4

1 回答 1

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();
    }
}
于 2017-02-08T19:49:50.350 回答