EF core: many to many in MySQL

1

I'm trying to create many to many relationship with EF core. That's my 2 entries:

public class DbCharacter : DbEntity
{
   public string CharName { get; set; }
   public ICollection<DbCharacterSkill> Skills { get; set; }
}
public class DbSkill : DbEntity
{
   public string SkillName { get; set; }
}
public class DbCharacterSkill : DbEntity
{
   public int CharacterId { get; set; }
   public int SkillId { get; set; }

   public DbCharacter Character { get; set; }
   public DbSkill Skill { get; set; }
}
public class DatabaseContext : DbContext
{
   ...

   protected override void OnModelCreating(ModelBuilder modelBuilder)
   {
       // Many to many relations.
       modelBuilder.Entity<DbCharacterSkill>().HasKey(x => new { x.CharacterId, x.SkillId });
       modelBuilder.Entity<DbCharacterSkill>().HasOne(pt => pt.Character).WithMany(p => p.Skills).HasForeignKey(pt => pt.CharacterId);
   }
}

That should work, but I'm getting an exception while Update-Database: Failed executing DbCommand (26ms) [Parameters=[], CommandType='Text', CommandTimeout='30'] CREATE TABLE CharacterSkill ( CharacterId int NOT NULL, SkillId int NOT NULL, Id int NOT NULL AUTO_INCREMENT, CONSTRAINT PK_CharacterSkill PRIMARY KEY (CharacterId, SkillId), CONSTRAINT FK_CharacterSkill_Characters_CharacterId FOREIGN KEY (CharacterId) REFERENCES Characters (Id) ON DELETE CASCADE, CONSTRAINT FK_CharacterSkill_Skills_SkillId FOREIGN KEY (SkillId) REFERENCES Skills (Id) ON DELETE CASCADE ); MySql.Data.MySqlClient.MySqlException (0x80004005): Incorrect table definition; there can be only one auto column and it must be defined as a key

This is obviously saying, that only Id can be a primary key because it's auto-incremented. But all tutorials, that I read, were saying, that I have to write something like modelBuilder.Entity<DbCharacterSkill>().HasKey(x => new { x.CharacterId, x.SkillId });.

QUESTION: What will happen if I don't use HasKey? Or what is the right approach to work with many to many and MySQL?

c#
mysql
entity-framework-core
entity-framework-core-migrations
entity-framework-core-3.1
asked on Stack Overflow Mar 1, 2020 by Anna Melashkina • edited Mar 4, 2020 by Anna Melashkina

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0