在 mvc 中使用 linq 进行多表查询,可以通过使用 join 子句或导航属性来实现。

在现代Web开发中,数据查询是一项核心任务,ASP.NET MVC(ModelViewController)框架结合了LINQ(Language Integrated Query)的强大功能,使得开发者能够高效地进行多表查询和数据处理,本文将详细介绍如何在MVC项目中使用LINQ进行多表查询,并实现分页功能。
一、添加 LINQ to SQL 数据源
1、创建数据库模型:
在MVC项目的Models文件夹中,右击选择“添加”>“新建项”>“Linq To Sql数据源”,定义一个名称如StudentsDb.dbml。
2、拖放表格:
从服务器资源管理器中将需要关联的表(例如student表和stujz表)拖放到StudentsDb.dbml设计视图中,这将自动生成对应的数据实体类。
二、定义数据模型
根据查询需求,定义返回页面所需的数据结构。
public class ResultStudentsList
{
public int Id { get; set; }
public string StuName { get; set; }
public string StuSex { get; set; }
public int StuNl { get; set; }
public string JzName { get; set; }
public string JzPhone { get; set; }
}
三、编写数据访问层
在数据访问层中,使用LINQ to SQL进行多表查询,并将结果映射到定义的数据模型上。

public class StudentRepository
{
private DataClasses1DataContext db = new DataClasses1DataContext();
public IQueryable<ResultStudentsList> GetStudentsWithParents()
{
var students = from student in db.Students
join stujz in db.Stujzs on student.Id equals stujz.StuId
select new ResultStudentsList
{
Id = student.Id,
StuName = student.StuName,
StuSex = student.StuSex,
StuNl = student.StuNl,
JzName = stujz.JzName,
JzPhone = stujz.JzPhone
};
return students;
}
}
四、构建控制器
在控制器中调用数据访问层的方法,获取数据并传递给视图,实现分页功能:
public class StudentController : Controller
{
private StudentRepository repository = new StudentRepository();
public ActionResult Index(int? page)
{
int pageSize = 10; //每页显示的记录数
int pageNumber = page ?? 1; //默认为第一页
return View(repository.GetStudentsWithParents().Skip((pageNumber 1) * pageSize).Take(pageSize).ToList());
}
}
五、创建视图
在视图中使用HTML表格展示查询结果,并添加分页导航:
@model IEnumerable<ResultStudentsList>
<table>
<tr>
<th>学生ID</th>
<th>学生姓名</th>
<th>学生性别</th>
<th>学生年龄</th>
<th>家长姓名</th>
<th>家长电话</th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>@item.Id</td>
<td>@item.StuName</td>
<td>@item.StuSex</td>
<td>@item.StuNl</td>
<td>@item.JzName</td>
<td>@item.JzPhone</td>
</tr>
}
</table>
<!分页导航 >
<div>
@for (int i = 1; i <= totalPage; i++)
{
<a href="@Url.Action("Index", new { page = i })">@i</a>
}
</div>
通过上述步骤,我们实现了在MVC项目中使用LINQ进行多表查询,并在视图中展示分页结果,这种方法不仅提高了数据查询的效率,还增强了代码的可读性和可维护性,开发者可以根据实际需求进一步优化查询逻辑,例如添加排序、过滤等功能,以满足更复杂的业务场景。
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/102947.html