1

我正在使用 EF 代码优先模型开发 asp.net mvc 4 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();
}

现在我想将一些数据分配给分支类中的 book 属性,所以喜欢,

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

现在要获得分支,我有类似的网址,

/api/branch/12

有什么方法可以使用像这样的 url 在特定分支中获取特定书籍

/api/branch/12/book/567

归还第 12 号分行的第 567 号书。请指导我。

4

1 回答 1

2

您可以使用这种 url 将 book 传递给 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更适合此代码。

于 2012-11-17T12:19:14.607 回答