Miner28_3
Miner28_3
CC#
Created by Miner28_3 on 12/16/2024 in #help
EF Core Many to Many relationship through Entity
Hello there :Wave: I'm having a weird issue with EF Core that I think I got lost in 😅 I got a mostly Scaffolded Database with couple changes I've been trying to do - I got something that looks sorta like this
public partial class DiscordMember
{
public long Id { get; set; }
public virtual ICollection<DiscordRole> Roles { get; set; } = new List<DiscordRole>();
}

public partial class DiscordRole
{
public long Id { get; set; }
public virtual ICollection<DiscordMember> Members { get; set; } = new List<DiscordMember>();
}

public partial class DiscordMemberRole
{
public int Id { get; set; }

public long? MemberId { get; set; }

public long? RoleId { get; set; }

public virtual DiscordMember Member { get; set; }

public virtual DiscordRole Role { get; set; }
}

// OnModelCreating
// DiscordMember
entity.HasMany(m => m.Roles)
.WithMany(r => r.Members)
.UsingEntity<DiscordMemberRole>(
join => join
.HasOne(j => j.Role)
.WithMany()
.HasForeignKey(j => j.RoleId)
.HasConstraintName("discord_member_roles_role_id_fkey"),
join => join
.HasOne(j => j.Member)
.WithMany()
.HasForeignKey(j => j.MemberId)
.HasConstraintName("discord_member_roles_member_id_fkey"),
join =>
{
join.ToTable("discord_member_roles"); // Explicitly set the join table name
join.Property(j => j.RoleId).HasColumnName("role_id"); // Map to actual column
join.Property(j => j.MemberId).HasColumnName("member_id"); // Map to actual column
});
//DiscordMemberRole
modelBuilder.Entity<DiscordMemberRole>(entity =>
{
entity.HasKey(e => e.Id).HasName("discord_member_roles_pkey");

entity.ToTable("discord_member_roles");

entity.HasIndex(e => e.MemberId, "discord_member_roles_member_id");

entity.HasIndex(e => e.RoleId, "discord_member_roles_role_id");

entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.MemberId).HasColumnName("member_id");
entity.Property(e => e.RoleId).HasColumnName("role_id");

entity.HasOne(d => d.Member)
.WithMany()
.HasForeignKey(d => d.MemberId)
.HasConstraintName("discord_member_roles_member_id_fkey");

entity.HasOne(d => d.Role)
.WithMany()
.HasForeignKey(d => d.RoleId)
.HasConstraintName("discord_member_roles_role_id_fkey");
});
public partial class DiscordMember
{
public long Id { get; set; }
public virtual ICollection<DiscordRole> Roles { get; set; } = new List<DiscordRole>();
}

public partial class DiscordRole
{
public long Id { get; set; }
public virtual ICollection<DiscordMember> Members { get; set; } = new List<DiscordMember>();
}

public partial class DiscordMemberRole
{
public int Id { get; set; }

public long? MemberId { get; set; }

public long? RoleId { get; set; }

public virtual DiscordMember Member { get; set; }

public virtual DiscordRole Role { get; set; }
}

// OnModelCreating
// DiscordMember
entity.HasMany(m => m.Roles)
.WithMany(r => r.Members)
.UsingEntity<DiscordMemberRole>(
join => join
.HasOne(j => j.Role)
.WithMany()
.HasForeignKey(j => j.RoleId)
.HasConstraintName("discord_member_roles_role_id_fkey"),
join => join
.HasOne(j => j.Member)
.WithMany()
.HasForeignKey(j => j.MemberId)
.HasConstraintName("discord_member_roles_member_id_fkey"),
join =>
{
join.ToTable("discord_member_roles"); // Explicitly set the join table name
join.Property(j => j.RoleId).HasColumnName("role_id"); // Map to actual column
join.Property(j => j.MemberId).HasColumnName("member_id"); // Map to actual column
});
//DiscordMemberRole
modelBuilder.Entity<DiscordMemberRole>(entity =>
{
entity.HasKey(e => e.Id).HasName("discord_member_roles_pkey");

entity.ToTable("discord_member_roles");

entity.HasIndex(e => e.MemberId, "discord_member_roles_member_id");

entity.HasIndex(e => e.RoleId, "discord_member_roles_role_id");

entity.Property(e => e.Id).HasColumnName("id");
entity.Property(e => e.MemberId).HasColumnName("member_id");
entity.Property(e => e.RoleId).HasColumnName("role_id");

entity.HasOne(d => d.Member)
.WithMany()
.HasForeignKey(d => d.MemberId)
.HasConstraintName("discord_member_roles_member_id_fkey");

entity.HasOne(d => d.Role)
.WithMany()
.HasForeignKey(d => d.RoleId)
.HasConstraintName("discord_member_roles_role_id_fkey");
});
But I'm in a "loop" of errors, based on what changes I do I get different error when trying to Include .Roles in discord Member query
39 replies