2017-04-03 24 views
0

我有我的語境C#的OData v2的回報只有過濾擴大實體


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時,我希望返回給他的展開的Alpha通過UserID進行過濾。這意味着我不想讓擴展列表包含所有阿爾法,而只是屬於他的那些(UserID =「hisID」)

回答

0

我只能通過使用查詢攔截器(可能有另一種直接方法)來查看它。 類似這樣的:

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

} 
+0

我從來沒有聽說過WCF數據系列在您的評論之前。據我瞭解,我的控制器需要擴展DataService。是對的嗎? –

+0

另外,根據這個:http://stackoverflow.com/questions/37061426/odata-web-api-query-interceptor QueryInteceptors不允許在web api OData –