【问题标题】:C# OData v2 return only filtered expanded entitiesC# OData v2 仅返回过滤的扩展实体
【发布时间】:2017-08-28 11:35:22
【问题描述】:

我的上下文中有以下类


public class Alpha {
   public string UserID {get;set;}
   public User User {get;set;}
   public string BetaID {get;set;}
   public Beta Beta {get;set;}
}
public class Beta {
   public string UserID {get;set;}
   public User User {get;set;}
   public virtual List<Alpha> Alphas {get;set;}
}

和一个 B 的 web api 控制器具有以下方法

[EnableQuery(MaxTop = 100000)]
public List<Beta> GetAll()
{
    return Query().Where(s=>s.UserID == "logedinUserID").ToList(); 
}

现在的问题是,当用户使用上述方法并将 &$expand=Alphas 添加到 url 时,我希望返回给他的扩展 Alphas 被 UserID 过滤。这意味着我不希望扩展列表包含所有 Alpha,而只包含属于他的那些 (UserID = "hisID")

【问题讨论】:

    标签: c# asp.net-web-api odata expand


    【解决方案1】:

    我只能通过使用查询拦截器看到它(可能还有另一种直接的方法)。 像这样的:

    [QueryInterceptor("Alpha")]
    public Expression<Func<Entity,bool>> GetAll()
    {
        // implement your logic and return the object
    
    }
    

    【讨论】:

    • 在您发表评论之前,我从未听说过 WCF 数据服务。据我了解,我的控制器需要扩展 DataService。对吗?
    • 另外,根据这个:stackoverflow.com/questions/37061426/…QueryInteceptors are not allowed in web api OData
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 2014-12-11
    相关资源
    最近更新 更多