【问题标题】:Restier getting stored procedure function to work HTTP requestRestier 获取存储过程函数以工作 HTTP 请求
【发布时间】:2017-06-21 09:43:41
【问题描述】:

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

【问题讨论】:

  • 注意 404 表示没有处理程序,所以我相信我的问题是为 ResTier/odata 4 创建的代码设置一个控制器处理程序。所以我正在寻找一个连接病毒的示例ObjectResult 方法。

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


【解决方案1】:

在尝试让 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();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 2014-01-26
    • 2016-04-21
    • 2019-02-08
    • 2016-02-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多