我正在尝试按照这个教程创建一个OData服务。我正在查看关于导航属性的主题:
看起来这段代码有些过时了(文章出自2014年,但我正在使用Visual Studio 2017)。
我的Helper类上有很多红色下划线:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Web.Http.Routing;
using System.Web.OData.Extensions;
using System.Web.OData.Routing;
using Microsoft.OData;
using Microsoft.OData.UriParser;
namespace ProductService
{
public static class Helpers
{
public static TKey GetFromUri<TKey>(HttpRequestMessage request, Uri uri)
{
if(uri == null)
throw new ArgumentException("uri");
var urlHelper = request.GetUrlHelper() ?? new UrlHelper(request);
string serviceRoot = urlHelper.CreateODataLink(
request.ODataProperties().RouteName,
request.ODataProperties().PathHandler, new List<ODataPathSegment>());
var odataPath = request.ODataProperties().PathHandler.Parse(
request.ODataProperties().Model,
serviceRoot, uri.LocalPath);
var keySegment = odataPath.Segments.OfType<KeyValuePathSegment>()
.FirstOrDefault();
if (keySegment == null)
throw new InvalidOperationException("The link does not contain a key.");
var value = ODataUriUtils.ConvertFromUriLiteral(keySegment.Value,
ODataVersion.V4);
return (TKey)value;
}
}
}
我在这个类中有三段代码存在问题:
request.ODataProperties().PathHandler
并且
request.ODataProperties().Model
我遇到了错误:
'HttpRequestMessageProperties' 没有包含 'PathHandler' 的定义,也没有扩展方法...
它也无法找到 KeyValuePathSegment 类。
是否有一种重写这个类以使其保持最新的方法?