c# - OData 客户端 $expand 不工作

标签 c# asp.net odata

使用的软件:

  • ASP.Net 网络 API 2
  • OData v4
  • Microsoft OData 客户端 6.13

考虑以下模型:

Location (Id, LocationName, Street, PostalCodeId)

PostalCode (Id, ZIP)

一个Location有一个PostalCode,一个PostalCode有多个Locations

这是 OData 配置:

ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<Location>("Locations");
builder.EntitySet<PostalCode>("PostalCodes");

config.MapODataServiceRoute(
            routeName: "ODataRoute",
            routePrefix: "odata",
            model: builder.GetEdmModel());

模型类:

public class Location {
    [Key]
    public int Id { get; set; }
    public String LocationName { get; set; }
    public String Street { get; set; }
    public int PostalCodeId { get; set; }
    [ForeignKey("PostalCodeId")]
    public PostalCode PostalCode { get; set; }
}

public class PostalCode {
    public int Id { get; set; }
    public string ZIP { get; set; }
    public List<Location> Locations { get; set; }
}

在浏览器中调用 http://localhost:49938/odata/Locations?$expand=PostalCode&$orderby=LocationName$expand 有效:

{
  "@odata.context": "http://localhost:49938/odata/$metadata#Locations",
  "value": [
    {
      "Id": 1,
      "LocationName": "My Location 1",
      "Street": "Street 7",
      "PostalCodeId": 1838,
      "PostalCode": {
        "Id": 1838,
        "ZIP": "4081"
      }
    }
  ]
}

但是当我在应用程序中执行相同的请求时,它不起作用:

Container c = new Container(new Uri("http://localhost:49938/odata/"));
var result = c.Locations
                 .Expand(x => x.PostalCode)
                 .OrderBy(x => x.LocationName)
                 .ToList();

当我执行此代码时,PostalCodenull

最佳答案

马蒂诺

new Container...var result= ...之间是否有查询操作?

如果是,请添加以下代码:

container.MergeOption = MergeOption.OverwriteChanges;

谢谢。

关于c# - OData 客户端 $expand 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31671927/

相关文章:

WCF 数据服务 (OData) 与 ASP.NET Web API

json - 带有请求正文的 HTTP GET 以限制字段和过滤器

C# 为什么在我们已经有终结器时进行处置

javascript - RadWindow 未在客户端上打开

c# - 在某些字符前后修剪字符串

asp.net - 使用我的应用程序快速书籍向 Web Connector 发送请求

c# - OData - 将字段添加到代理部分类但需要在请求中忽略它们

c# 从子实例中获取父实例

c# - 集合被修改异常 linq-to-objects

c# - iTextSharp 解析 PDF 对象以删除未使用的对象