Restier获取存储过程函数来处理HTTP请求

时间:2017-02-03 22:34:24

标签: c# asp.net entity-framework http restier

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

1 个答案:

答案 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();
    }
}