ASP.NET Entity Framework可以使用Include方法来加载嵌套的相关数据。以下是一个示例代码:
using System;
using System.Linq;
using Microsoft.EntityFrameworkCore;
namespace EFIncludeExample
{
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int GradeId { get; set; }
public Grade Grade { get; set; }
}
public class Grade
{
public int Id { get; set; }
public string Name { get; set; }
public int SchoolId { get; set; }
public School School { get; set; }
}
public class School
{
public int Id { get; set; }
public string Name { get; set; }
}
public class SchoolContext : DbContext
{
public DbSet Students { get; set; }
public DbSet Grades { get; set; }
public DbSet Schools { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("your_connection_string");
}
}
class Program
{
static void Main(string[] args)
{
using (var context = new SchoolContext())
{
var students = context.Students
.Include(s => s.Grade) // 加载嵌套的Grade数据
.ThenInclude(g => g.School) // 加载嵌套的School数据
.ToList();
foreach (var student in students)
{
Console.WriteLine($"Student: {student.Name}, Grade: {student.Grade.Name}, School: {student.Grade.School.Name}");
}
}
}
}
}
在上面的示例代码中,我们有三个实体类:Student、Grade和School。Student类拥有一个Grade属性,Grade类拥有一个School属性。我们使用Include方法来加载嵌套的Grade和School数据。在Main方法中,我们创建了一个SchoolContext实例,并使用Include和ThenInclude方法加载嵌套的数据。然后,我们遍历所有学生,并打印出学生的姓名、年级和学校。