2017-02-03 74 views
0

我有一个使用最新版本的RESTier网站。我使用EF 6从数据库中创建的所有实体和视图都可以正常工作,但似乎无法获得我带入的存储过程。由于文档有点稀疏,我不确定是否需要实施除基本启动服务之外的任何内容。Restier获取存储过程函数以工作HTTP请求

当通过邮递员发送此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

注404表示没有处理程序,以便我相信我的问题是建立一个控制器由ResTier/odata 4创建的代码的处理程序。所以我正在寻找一个例子来连接虚拟的ObjectResult方法。 – patrickL

回答

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