Ошибка при загрузке связанных данных в EntityFrameworkCore

0

Я получаю ниже ошибки, загружая связанные данные (курсовые рисунки курса).

ошибка

MySqlException: Неизвестный столбец 'c.Coursepages.CoursepageId' в 'списке полей'

Точка отказа:

var course = await _context.Courses.Include(c => c.Coursepages)
                .SingleOrDefaultAsync(m => m.Url == courseUrl);

Контекст БД приложения:

        modelBuilder.Entity<Course>(entity =>
        {
            entity.ToTable("courses");

            entity.HasIndex(e => e.Id).HasName("idx_Courses_Id");

            entity.HasIndex(e => e.Url).HasName("uk_Url").IsUnique();

            entity.Property(e => e.Id).HasColumnType("int(11)");
        });

        modelBuilder.Entity<Coursepage>(entity =>
        {
            entity.ToTable("coursepages");

            entity.HasIndex(e => e.CourseId).HasName("idx_CoursePages_CourseId");

            entity.HasIndex(e => e.LessonId).HasName("idx_CoursePages_LessonId");

            entity.HasIndex(e => e.TopicId).HasName("idx_CoursePages_TopicId");

            entity.HasIndex(e => new { e.CourseId, e.LessonId, e.TopicId }).HasName("uk_CourseId_LessonId_TopicId").IsUnique();

            entity.Property(e => e.Id).HasColumnType("int(11)");
            entity.Property(e => e.CourseId).HasColumnType("int(11)");
            entity.Property(e => e.LessonId).HasColumnType("int(11)").HasDefaultValueSql("'0'");
            entity.Property(e => e.TopicId).HasColumnType("int(11)").HasDefaultValueSql("'0'");
            entity.HasOne(d => d.Course)
                .WithMany(p => p.Coursepages)
                .HasForeignKey(d => d.CourseId)
                .OnDelete(DeleteBehavior.ClientSetNull)
                .HasConstraintName("FK_CoursePages_Courses_CourseId");
        });

Модель курса

public partial class Course
{
    public Course()
    {
        Coursepages = new List<Coursepage>();
    }

    public int Id { get; set; }
    public string Url { get; set; }

    public ICollection<Coursepage> Coursepages { get; set; }
}

Модель курса:

public partial class Coursepage
{
    public int Id { get; set; }
    public int CourseId { get; set; }
    public int LessonId { get; set; }
    public int TopicId { get; set; }
    public Course Course { get; set; }
}

Примечание. Я использую ASP.Net Core 2.0 с MySQL с помощью драйвера Pomelo.EntityFrameworkCore.MySQL.

  • 0
    Привет, опущенный избиратель. Можете ли вы оставить комментарий с обоснованием / обоснованием? Это будет действительно полезно.
Теги:
asp.net-core-mvc
entity-framework-core
asp.net-core-2.0

1 ответ

0

Причиной проблемы является:

public List <Coursepage> Темы {get; set; задавать; } }

EntityFramework пытается сопоставить это свойство с базой данных и принимает первичный ключ как "CoursepageId", который он не находит нигде в db.

Любое свойство, которое напрямую не сопоставляется с базой данных, должно быть помечено атрибутом NotMapped.

Таким образом, модель CoursePages должна быть такой:

public partial class Coursepage
{
    public int Id { get; set; }
    public int CourseId { get; set; }
    public int LessonId { get; set; }
    public int TopicId { get; set; }
    public Course Course { get; set; }

      //  If current page is a Lesson Page
      [NotMapped]
      public List<Coursepage> Topics { get; set; }
}

Примечание. Импортируйте пространство имен System.ComponentModel.DataAnnotations.Schema для использования атрибута NotMapped.

Рекомендации:

Ещё вопросы

Сообщество Overcoder
Наверх
Меню