Как сделать отношения один ко многим, используя EF Core (Repository Pattern) - PullRequest
0 голосов
/ 20 ноября 2018

Я пытаюсь установить связь «Студент имеет много StudentRecords», используя шаблон репозитория. когда я запускаю миграцию с ошибкой ниже. Пожалуйста, дайте мне знать, что мне делать в методе создания модели.

"Свойство Student.StudentRecord относится к типу StudentRecord, который не поддерживается текущим поставщиком базы данных. Либо измените тип CLR свойства, либо игнорируйте свойство с помощью атрибута [NotMapped] или с помощью EntityTypeBuilder. Игнорировать 'в' OnModelCreating '. "

  public class Student : BaseEntity
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Email { get; set; }
    public string EnrollmentNo { get; set; }

    public StudentRecord StudentRecord { get; set; }
}  

а вот мой класс сопоставления и контексты для модели создания математики.

class StudentMap
{
    public StudentMap(EntityTypeBuilder<Student> entityBuilder)
    {
        entityBuilder.HasKey(t => t.Id);
        entityBuilder.Property(t => t.FirstName).IsRequired();
        entityBuilder.Property(t => t.LastName).IsRequired();
        entityBuilder.Property(t => t.Email).IsRequired();
        entityBuilder.Property(t => t.EnrollmentNo).IsRequired();
        entityBuilder.Property(t => t.StudentRecord).IsRequired();
    }

}
public class ApplicationContext : DbContext
{
    public ApplicationContext(DbContextOptions<ApplicationContext> options) : base(options)
    {
    }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        new StudentMap(modelBuilder.Entity<Student>());
        new StudentRecordMapp(modelBuilder.Entity<StudentRecord>());
    }
}  

1 Ответ

0 голосов
/ 20 ноября 2018

В OnModelCreating:

modelBuilder.Entity<StudentRecord>()
.HasOne(x => x.Student)
.WithMany(x => x.StudentRecords)
.HasForeignKey(x => x.StudentID)
.OnDelete(DeleteBehavior.Restrict);

Ваши лица:

public class Student
{
    public int ID { get; set; }
    public virtual ICollection<StudentRecord> StudentRecords { get; set; }
}

public class StudentRecord
{
    public int ID { get; set; }
    public int StudentID { get; set; }
    public virtual Student Student { get; set; }
}
...