誰かが私が持っていた問題を克服することができます。 データベースからレコードをフェッチするWeb APIを作成しました。 私は場所での作業、[OK]を、次の機能があります。Web API、OData GET操作で複数のパラメータを渡す
はlocalhost:8080/API /予算を - 格安ホテル
localhostを返します:8080/API /予算(799)を - すべて返します。
はlocalhost:8080/API/Budg契約のために私が探している何799
は私が何かのようなので、取得したレコードにcalulationsを行うことができるように、二つのパラメータを渡すことができるようにすることですets(799)/ 215 - 799は契約番号、215は品目番号です。
これにより、計算に使用できる予算の材料のみのデータセットを返すことができます。これには、契約番号と品目番号の両方と、他の数値のロードを含むSQLテーブルが1つだけあります。
は、ここで私がこれまで持っているものだが、それが働いているように見えるdoesntの:
public IHttpActionResult Get()
{
return Ok(context.Budgets);
}
public IHttpActionResult Get([FromODataUri] int key)
{
var budgets = context.Budgets.FirstOrDefault(p => p.ProjectNo == key);
if (budgets == null)
{
return NotFound();
}
return Ok(budgets);
}
[ODataRoute("GetMaterialUsage(ProjectId={ProjectId},ResourceCode={ResourceCode})")]
public IHttpActionResult GetMaterialUsage([FromODataUri] int ProjectId, [FromODataUri] string ResourceCode)
{
var budgets = context.Budgets.FirstOrDefault(p => p.ProjectNo == ProjectId && p.ResourceCode == ResourceCode);
if (budgets == null)
{
return NotFound();
}
return Ok(budgets);
}
WebApiConfig:
ODataModelBuilder builder = new ODataConventionModelBuilder();
// Web API configuration and services
builder.EntitySet<BudgetTypes>("BudgetTypes");
builder.EntitySet<Budgets>("Budgets");
var function = builder.Function("GetMaterialUsage");
function.Parameter<int>("ProjectId");
function.Parameter<string>("ResourceCode");
function.ReturnsCollectionFromEntitySet<Budgets>("Budgets");
// Web API routes
config.MapHttpAttributeRoutes();
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "api",
model: builder.GetEdmModel()
);
誰もこれを行うことができますどのようにいくつかの光を当てることができますか? URLから関数に2つのパラメータを渡したいだけです。現時点で
次のリンクを返す404: はlocalhost:8080/API /予算(752230) はlocalhost:8080/API /予算(ProjectNo = 752、ResourceCode = 230)
ありがとうございました。あなたのコメントのようなODataRouteをアサインすると:) – McDuff