This is an odd issue. My Entity Framework Core project is combining the table and the Id into one column like this: MonsterListMonsterId
Here is the error:
Microsoft.Data.SqlClient.SqlException (0x80131904): Invalid column name 'MonsterListMonsterId'
This is the controller that generates the error:
var treasuresByMonster = await _context.MonsterTreasures.Where(q => q.MonsterId == id).ToListAsync();
Clearly the column is called MonsterId. Not MonsterListMonsterId.
Here is the MonsterList class:
public class MonsterList
{
public MonsterList()
{
MonsterTreasures = new HashSet<MonsterTreasures>();
}
public Guid MonsterId { get; set; }
public string MonsterText { get; set; }
public virtual ICollection<MonsterTreasures> MonsterTreasures { get; set; }
}
Here is the MonsterTreasure class:
public partial class MonsterTreasures
{
public Guid TreasureId { get; set; }
public Guid? MonsterId { get; set; }
public string TreasureText { get; set; }
public MonsterList MonsterList { get; set; }
}
And the context class:
modelBuilder.Entity<MonsterTreasures>(entity =>
{
entity.HasKey(e => e.TreasureId);
entity.HasOne(e => e.MonsterList)
.WithMany(m => m.MonsterTreasures);
entity.ToTable("MonsterTreasures");
entity.Property(e => e.TreasureId)
.HasColumnName("TreasureId");
entity.Property(e => e.MonsterId)
.HasColumnName("MonsterId");
entity.Property(e => e.TreasureText)
.HasColumnName("TreasureText");
});
What is a proper fix for this?
Thanks!