C# 如何编写Web api来处理与c中的外键连接的表?
我正在尝试为学生表和学生所学的课程编写一个web api。控制器单独工作正常。我的意思是get、post、put和delete方法都很有效 Student表的id为主键、名称和课程 课程表的id为主键,学生id为外键,以及课程名称 模型类是C# 如何编写Web api来处理与c中的外键连接的表?,c#,.net,asp.net-web-api,C#,.net,Asp.net Web Api,我正在尝试为学生表和学生所学的课程编写一个web api。控制器单独工作正常。我的意思是get、post、put和delete方法都很有效 Student表的id为主键、名称和课程 课程表的id为主键,学生id为外键,以及课程名称 模型类是 public class Student { public int id { get; set; } public string name{ get; set; } public ICollec
public class Student
{
public int id { get; set; }
public string name{ get; set; }
public ICollection<Courses> Courses { get; set; }
}
public class Courses
{
public int id { get; set; }
public int studentid { get; set; }
public string name{ get; set; }
}
这是我的问题。如何编写考虑外键的方法?我找不到任何代码示例。所有这些都是用于实体框架…例如,为了获得您可以使用的所有学生和课程:
[HttpGet]
public ActionResult<StudentViewModel> GetAllStudents()
{
try
{
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
using (var cmd = new SqlCommand())
{
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "SELECT s.id, s.name, c.Name as courseName FROM Student s INNER JOIN Courses c on c.studentId = s.id";
cmd.Connection = connection;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dataTable);
connection.Close();
da.Dispose();
//Fill result view model from dataTable which will contain all data which you want from DB.
}
}
}
catch (SqlException ex)
{
//Log exception
}
}
但这只是一个样本。在现实世界中,最好在控制器中的操作和获取数据的业务逻辑之间分割逻辑。使用对象关系映射ORM(类似EntityFramework)将节省大量时间。如果您需要使用自定义查询,则可以使用。这是一个SQL问题。调查一下,你的问题是什么?考虑外键是什么意思?你需要更具体一点,什么方法等等。你尝试过什么。
[HttpGet]
public ActionResult<StudentViewModel> GetAllStudents()
{
try
{
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
using (var cmd = new SqlCommand())
{
cmd.CommandType = System.Data.CommandType.Text;
cmd.CommandText = "SELECT s.id, s.name, c.Name as courseName FROM Student s INNER JOIN Courses c on c.studentId = s.id";
cmd.Connection = connection;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dataTable);
connection.Close();
da.Dispose();
//Fill result view model from dataTable which will contain all data which you want from DB.
}
}
}
catch (SqlException ex)
{
//Log exception
}
}