Я создаю веб-приложение - ASP. NET Ядро с Entity Framework- и имею около 10 таблиц в базе данных MYSQL. Я начал с создания базы данных и оттуда создал модели, а затем создал контроллеры для каждой таблицы, чтобы пользователь мог выполнять операции CRUD из приложения.
Все отлично работает для 9 из 10 таблиц, но при попытке доступа к индексу (или любой другой странице в этом отношении) одна из них выдает ошибку:
MySqlException: Unknown column ' x.DeviceId 'in' field list '
Этот столбец не существует, но, поскольку таблица имеет внешний ключ DeviceTypeId, и, посмотрев немного на людей, имеющих подобные проблемы, кажется, что проблема может заключаться в том, что FK не определен должным образом, и ему было присвоено имя автоматически. По этой причине я добавил тег FK в файл модели и проверил, что я включил .HasForeignKey (d => d.DeviceTypeId) в файл контекста.
Похоже, что это не решает проблему, и я не вижу, где я иду не так, поэтому, если у кого-то есть какие-либо идеи, я был бы очень признателен за помощь, поскольку я застрял на этом некоторое время .
Вот модель, которая у меня есть
public partial class Mag
{
public int Id { get; set; }
public string Name { get; set; }
public string Abbreviation { get; set; }
public string Unit { get; set; }
public string Description { get; set; }
public int DeviceTypeId { get; set; }
[ForeignKey("DeviceTypeId")]
public DeviceType DeviceType { get; set; }
}
, и вот соответствующая часть файла контекста
modelBuilder.Entity<Mag>(entity =>
{
entity.ToTable("magnitude", "database");
entity.HasIndex(e => e.DeviceTypeId)
.HasName("device_type_id");
entity.Property(e => e.Id)
.HasColumnName("id")
.HasColumnType("int(11)");
entity.Property(e => e.Name)
.IsRequired()
.HasColumnName("name")
.HasMaxLength(100)
.IsUnicode(false);
entity.Property(e => e.Abbreviation)
.IsRequired()
.HasColumnName("abbreviation")
.HasMaxLength(20)
.IsUnicode(false);
entity.Property(e => e.Unit)
.IsRequired()
.HasColumnName("unit")
.HasMaxLength(20)
.IsUnicode(false);
entity.Property(e => e.Description)
.IsRequired()
.HasColumnName("description")
.IsUnicode(false);
entity.Property(e => e.DeviceTypeId)
.HasColumnName("device_type_id")
.HasColumnType("int(11)");
entity.HasOne(d => d.DeviceType)
.WithMany(p => p.Mag)
.HasForeignKey(d => d.DeviceTypeId)
.OnDelete(DeleteBehavior.ClientSetNull)
.HasConstraintName("magnitude_ibfk_1");
});
Вот код индекса с контроллера
public async Task<IActionResult> Index()
{
var adminReturn = _context.Mag.Include(m => m.DeviceType);
return View(await adminReturn.ToListAsync());
}
Спасибо!