【发布时间】:2016-04-17 15:54:41
【问题描述】:
问题
我能够使用以下方法从该关系的任一端成功获取相关项目:
现在我正在尝试管理它们之间的关系。我发现了一些我尝试过的例子,但没有一个有效。 Heres one 和 heres another。
型号
public class Exercise
{
public int Id { get; set; }
public virtual ICollection<Measurement> Measurements { get; set; }
}
public class Measurement
{
public int Id { get; set; }
public virtual ICollection<Exercise> Exercises { get; set; }
}
动作
以下是我尝试过的操作和他们的要求:
[HttpDelete]
public IHttpActionResult DeleteRef([FromODataUri] int key, [FromODataUri] string relatedKey, string navigationProperty)
{
return StatusCode(HttpStatusCode.NoContent);
}
网址:http://localhost/api/Exercises(1)/Measurements$id=http://localhost/api/Measurements(4)
结果:404
[HttpDelete]
[ODataRoute("Exercises({key})/Measurements({relatedKey})/$ref")]
public IHttpActionResult DeleteMeasurementFromExercise(int key, int relatedKey)
{
return StatusCode(HttpStatusCode.NoContent);
}
网址:不适用
结果:服务器错误:The path template 'Exercises({key})/Measurements({relatedKey})/$ref' on the action 'DeleteMeasurementFromExercise' in controller 'Exercises' is not a valid OData path template. The URI segment '$ref' is invalid after the segment 'Measurements({relatedKey})'.
相关
This guy 有相同的症状,并且在 Microsoft 发布修复程序后能够解决它。我正在使用最新版本的 Web API 和 oData 运行,但仍然存在此问题。
<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.OData" version="5.9.0" targetFramework="net46" />
<package id="Microsoft.OData.Core" version="6.15.0" targetFramework="net46" />
<package id="Microsoft.OData.Edm" version="6.15.0" targetFramework="net46" />
【问题讨论】:
标签: c# asp.net asp.net-web-api odata