Entity framework 使用实体框架在ASP.NET API中获取操作

Entity framework 使用实体框架在ASP.NET API中获取操作,entity-framework,asp.net-web-api,Entity Framework,Asp.net Web Api,我使用实体框架代码优先的方法构建了一个ASP.NET Web API。它创建的数据库表如我所期望的那样代表了一个关系数据库。在API的GET操作中,我希望从3个表返回值。我看到的许多示例只显示了这样一个简单的回报: // GET: api/Books public IQueryable<Book> GetBooks() { return db.Books; } //GET:api/Books 公共IQueryable GetBooks() { 归还数据库书籍; } 其中仅

我使用实体框架代码优先的方法构建了一个ASP.NET Web API。它创建的数据库表如我所期望的那样代表了一个关系数据库。在API的GET操作中,我希望从3个表返回值。我看到的许多示例只显示了这样一个简单的回报:

// GET: api/Books
public IQueryable<Book> GetBooks()
{
    return db.Books;
}
//GET:api/Books
公共IQueryable GetBooks()
{
归还数据库书籍;
}
其中仅返回Books对象中的字段。这不会很有用,因为我有作者和书籍类型的外键。使用实体框架和Web API,通常如何从多个表返回字段值?我想我可以使用linq查询连接表并返回结果。这是最有效的方法还是有更好的方法


感谢您,您最好创建一个ViewModel,其中包含返回UI所需的所有数据,然后从数据库实体中填充这些数据(通常使用AutoMapper之类的工具)

然后返回ViewModel而不是数据库实体,这意味着您可以优化和简化通过网络发送的数据,并防止可能的敏感信息被暴露

以下是如何实现这一目标的示例:


除了模型方面,我还建议您尽量避免在控制器操作中直接访问DB上下文,而是将数据访问抽象到存储库(和服务,如果事情开始变得复杂)。

谢谢您的提示。这应该会有帮助。