[EF Core 8] Many-to-many relationship with payload
Hi all,
I am trying to create a many-to-many relationship as described in https://learn.microsoft.com/en-us/ef/core/modeling/relationships/many-to-many#many-to-many-and-join-table-with-payload
My models are the following:
MyDbContext:
when I try to create the initial migration I get the following error:
When adding a primary key on the
PostTag
model:
I have a few questions:
1) What am I missing and cannot make this relationship function?
2) Even if somehow the tables are produced from the migration, will the PostTag
table be able to return the CustomPayload
and how?
3) Is this supposed to be the correct way to supply the join table with a user defined payload
?Many-to-many relationships - EF Core
How to configure many-to-many relationships between entity types when using Entity Framework Core
2 Replies
You might have to configure it
I believe the errors are due to how EF now treats keyless entities as owned types
So might need explicit relationship configured there
Or at least a composite key on the join entity
FWIW I have all my many-to-many with explicit join entities configured explicitly
Add this to your DbContext:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Post>()
.HasMany(e => e.Tags)
.WithMany(e => e.Posts)
.UsingEntity<PostTag>(
l => l.HasOne(e => e.Tag).WithMany(e => PostTags).HasForeignKey(e => e.TagId),
l => l.HasOne(e => e.Post).WithMany(e => PostTags).HasForeignKey(e => e.PostId);
}