【问题标题】:OData-query is throwing error for $expand queryOData-query 为 $expand 查询抛出错误
【发布时间】:2019-07-16 03:35:16
【问题描述】:

有两个表“Task”和“Client”。这两个表都与ClientId(外键)相关。

在此查询中,我尝试使用 $expand 关键字从 Task 表中获取基于 ClientId 的客户端名称。下面是查询和实体类。

OData 查询:http://localhost:52484/Task?$expand=Client($select=Name)

 public class Task: GeneralTask
{
    public Task() { }

    public Task( 
        int clientId, 
        string title, 
       )
    { 
        this.Title = title;
        this.ClientId = clientId;
    }
}


 public abstract class GeneralTask
{
    protected GeneralTask()
    {
    }
    public string Title { get; set; }

    public int ClientId { get; set; }
    public virtual  Client Client { get; set; }

}

但我收到以下错误。

错误消息:“在 URI 中指定的查询无效。属性 'Client' 不能在 $expand 查询选项中使用。”

任何帮助将不胜感激。

【问题讨论】:

  • 你能展示你的 edm 定义吗? (模型构建器部分)
  • 谢谢。我已经通过添加以下代码解决了这个问题

标签: asp.net-web-api odata


【解决方案1】:

我们需要启用 OData 模型绑定属性,您可以使用以下块(WebApiConfig.cs 文件)中的中间行全局执行此操作

ODataModelBuilder builder = new ODataConventionModelBuilder();
config.Count().Filter().OrderBy().Expand().Select().MaxTop(null); //new line
builder.EntitySet<DB.Project>("Projects");

【讨论】:

    猜你喜欢
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 2015-05-12
    • 1970-01-01
    相关资源
    最近更新 更多