2012-11-17 37 views
1

我正在使用EF代碼第一個模型在asp.net mvc 4 web api上工作。我有導航屬性喜歡像一個類,如何在asp.net中使用導航屬性mvc web api

public class Branch 
{ 
[Key] 
public int Id{get; set;} 
public List<book> books{get; set;} 
} 

和我的書類是喜歡,

public class book 
{ 
[Key] 
public int id{get; set;} 
public string Name{get; set;} 
} 

現在我需要得到分支,所以我寫這樣的名單,

public IQuerable<branch> GetBranches(int branchid) 
{ 
    return context.school.where(m=>m.id==branchid).ToList().AsQuerable(); 
} 

現在我想分配一些數據來預訂分支類的財產,

context.school.ToList().ForEach(m=>m.books=GetBooks(branchid)); 

現在得到分支我有網址類似,

/api/branch/12 

和有沒有辦法使用像

/api/branch/12/book/567 

網址分支返回書號567在特定的分支獲得特定的書籍請指導我。

回答

2

你可以用這種URL來傳遞書BranchController:

/api/branch/12?book=567 

或者,您可以爲您的網址創建新的路徑

config.Routes.MapHttpRoute(
    name: "BranchBooksApi", 
    routeTemplate: "api/branch/{id}/book/{bookId}", 
    defaults: new { controller = "Branch" }); 

兩個選項都將調用方法一樣

public book Get(int id, int bookId) 
{ 
    //... 
} 

此外,如果您需要獲得書本(這不清楚我想要什麼 - 分支與單本書,或只是博好的分支),那麼BooksController可能更適合這個代碼。

+0

你能告訴我們更多關於OData的用法以及他們爲什麼介紹它嗎?我認爲OData是用來處理導航屬性的。你能解釋一下嗎? – Abzoozy

相關問題