Blazor6、EFCore和多对多关系中获取相关数据错误。
创始人
2024-12-21 00:00:58
0

在 EF Core 中,多对多关系通常需要一个包含两个导航属性的中间表,用于连接两个实体。在 Blazor 6 中,当我们尝试获取一个实体的相关数据时,如其关联的多个实体,可能发生错误。解决方法是通过使用 Include 和 ThenInclude 方法来显式地包括中间表和其关联实体,这将确保 EF Core 返回正确的数据。

以下是一个示例,其中两个实体之间有一个多对多关系:

public class Employee
{
    public int EmployeeId { get; set; }
    public string EmployeeName { get; set; }

    // Navigation properties
    public virtual ICollection Projects { get; set; }
}

public class Project
{
    public int ProjectId { get; set; }
    public string ProjectName { get; set; }

    // Navigation properties
    public virtual ICollection Employees { get; set; }
}

public class EmployeeProject
{
    public int EmployeeId { get; set; }
    public int ProjectId { get; set; }

    // Navigation properties
    public virtual Employee Employee { get; set; }
    public virtual Project Project { get; set; }
}

public class MyDbContext : DbContext
{
    public DbSet Employees { get; set; }
    public DbSet Projects { get; set; }
    public DbSet EmployeeProjects { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        // Configure many-to-many relationship
        modelBuilder.Entity()
            .HasKey(ep => new { ep.EmployeeId, ep.ProjectId });

        modelBuilder.Entity()
            .HasOne(ep => ep.Employee)
            .WithMany(e => e.Projects)
            .HasForeignKey(ep => ep.EmployeeId);

        modelBuilder.Entity()
            .HasOne(ep => ep.Project)
            .WithMany(p => p.Employees)
            .HasForeignKey(ep => ep.ProjectId);
    }
}

public class EmployeeService
{
    private readonly MyDbContext _context;

    public EmployeeService(MyDbContext context)
    {
        _context = context;

相关内容

热门资讯

黑科技辅助(微扑克代打)线上w... 黑科技辅助(微扑克代打)线上wpk德州ai固有真的是有挂!太嚣张了从来存在有挂(2021已更新)(哔...
黑科技代打(aa poker辅... 《黑科技代打(aa poker辅助软件)wEpOke总是存在有挂!太夸张了原来是有挂(2022已更新...
黑科技辅助挂(Wepoke a... 1、黑科技辅助挂(Wepoke app)wpK真是真的是有挂!太夸张了一向真的有挂(2022已更新)...
黑科技教学(德扑之星数据)We... 1、黑科技教学(德扑之星数据)Wepoke往昔是有挂!太夸张了原先存在有挂(2021已更新)(哔哩哔...
黑科技真的(wpk专用)德州a... 1、黑科技真的(wpk专用)德州aapoker俱乐部真是存在有挂!太坑了原来有挂(2026已更新)(...
黑科技最新(德扑之星抽水)aa... 黑科技最新(德扑之星抽水)aapOKER确实有挂!太坑了原本真的有挂(2026已更新)(哔哩哔哩);...
黑科技规律(wepoke辅助挂... 黑科技规律(wepoke辅助挂)wePOke总是真的有挂!太坑了起初真的有挂(2026已更新)(哔哩...
黑科技好牌(wpk模拟器)德州... WePoker透视辅助工具核心要点解析‌,黑科技好牌(wpk模拟器)德州扑克微扑克固有是真的有挂!太...
黑科技讲解(wpk教程)轰趴大... 黑科技讲解(wpk教程)轰趴大菠萝确实真的有挂!太实锤了一贯是真的有挂(2022已更新)(哔哩哔哩)...
黑科技攻略(wpkplus)云... 黑科技攻略(wpkplus)云扑克cloudpoker原生是有挂!太坑了都是真的是有挂(2025已更...