c# - 从多个 sql 表 Entity Framework web api 返回数据

标签 c# mysql entity-framework linq api

我有一个本地存储的数据库,其中包含许多不同的表,所有表都像这样连接在一起:

enter image description here

我正在尝试使用 vs 上的 Entity Framework 为这些创建一个 Web API。我的 Controller 如下所示:

public class CourseController : ApiController
{
    QubDBEntities entities = new QubDBEntities();

    public IEnumerable<Course> Get()
    {
        using (QubDBEntities entities = new QubDBEntities())
        {
            return entities.Courses.ToList();
        }
    }

    public Course Get(Guid id)
    {
        using (QubDBEntities entities = new QubDBEntities())
        {
            return entities.Courses.FirstOrDefault(e => e.Id == id);
        }
    }

    public Course Get(string day, DateTime time, int duration,string moduleRef, string moduleName, string courseRef,
        string roomRef,string roomName, string roomFloor, int roomNumber, string buildingRef, string buildingName)
    {
        //how do I join tables inside here so that I can 
        //return the courses with this view?^
    }
}

我不确定如何使用 Entity Framework 连接这些表?我的 SQL 选择语句在这里:

SELECT
    dbo.TimeTable.Day, dbo.TimeTable.StartTime, dbo.TimeTable.Duration, dbo.Module.ModuleRef
    , dbo.Module.ModuleName, dbo.Course.CourseRef, dbo.Room.RoomRef, dbo.Room.RoomName
    , dbo.Room.RoomFloor, dbo.Room.RoomNumber, dbo.Building.BuildingRef, dbo.Building.BuildingName

FROM dbo.Room INNER JOIN
         dbo.TimeTable INNER JOIN
         dbo.Module ON dbo.TimeTable.ModuleId = dbo.Module.Id ON dbo.Room.Id = dbo.TimeTable.RoomId INNER JOIN
         dbo.Building ON dbo.Room.BuildingId = dbo.Building.Id LEFT OUTER JOIN
         dbo.Course INNER JOIN
         dbo.CourseModule ON dbo.Course.Id = dbo.CourseModule.CourseId ON dbo.Module.Id = dbo.CourseModule.ModuleId

如有任何帮助/指点,我们将不胜感激!

最佳答案

在 Entity Framework 中,您可以通过三种方式返回连接表的结果:
1- 使用 Linq ,请引用link here
2- 使用 include ,请引用link here
3- 像使用通用函数一样使用原始 sql _context.Database.SqlQuery<type>(sqlString)

关于c# - 从多个 sql 表 Entity Framework web api 返回数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47019377/

相关文章:

c# - Entity Framework 、外键约束可能会导致循环或多条级联路径

entity-framework - 如何在 ASP.NET Web API(或一般的 REST)中添加/更新类集合导航属性

c# - 无法在 Mac OS X 上打开使用 SharpZipLib 创建的 ZIP 文件

MySQL查询: how to count grouped column but return ids(comma separated) in the current group

php - Mysql Date_Format的多种使用

javascript - 更改时重新生成下拉选项

c# - Entity Framework 继承和持久化列

c# - 将字典对象添加到对象列表

c# - “可选”参数,何时重载以及何时使用可为空的类型?

c# - C#中的信号量超时机制