Как исправить ошибку «500» при запросе связанных данных Asp.Net Core MVC - PullRequest
0 голосов
/ 08 октября 2019
    public class ApplicationUser : IdentityUser<Guid>
    {
        public EmergencyContact EmergencyContact { get; set; }

        public Instructor Instructor { get; set; }

        public List<CourseStudent> StudentCourses { get; set; }
    }

Это мой пользовательский класс пользователя. А затем это мой класс соединения, в котором есть пользователь и курсы

public class CourseStudent
    {
        public Guid StudentId { get; set; }
        public ApplicationUser Student { get; set; }

        public Guid CourseId { get; set; }
        public Course Course { get; set; }
    }

Я не могу вставить данные в User.StudentCourse, который дал мне 500 кодов состояния.

Тогда это мой контекст

modelBuilder.Entity<CourseStudent>()
                .HasKey(e => new {
                e.CourseId,
                e.StudentId
            });

            modelBuilder.Entity<CourseStudent>()
                .HasOne(e => e.Student)
                .WithMany(e => e.StudentCourses)
                .HasForeignKey(e => e.StudentId)
                .OnDelete(DeleteBehavior.Restrict);

            modelBuilder.Entity<CourseStudent>()
                .HasOne(e => e.Course)
                .WithMany(e => e.CourseStudents)
                .HasForeignKey(e => e.CourseId)
                .OnDelete(DeleteBehavior.Restrict);

Я не могу добраться до пользовательских курсов. Как можно решить эту проблему

1 Ответ

0 голосов
/ 09 октября 2019

Вот как я отношусь ко многим отношениям:
Пользователь:

public class User
    {
        [DatabaseGenerated(DatabaseGeneratedOption.Identity), Key] public Guid Id { get; set; }
        ...

        public ICollection<UserGroup> UserGroups { get; set; }
    }

Группа (в вашем случае - cource):

public class Group
{
    [Key]
    public Guid Id { get; set; }
    ...

    public ICollection<UserGroup> UserGroups { get; set; }
}

UserGroup (таблица соединения):

public class UserGroup
    {
        [Required]
        public Guid UserId { get; set; }
        public User User { get; set; }

        [Required]
        public Guid GroupId { get; set; }
        public Group Group { get; set; }

    }

В контекстном файле:

protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<UserGroup>().HasKey(ug => new { ug.UserId, ug.GroupId });
        }
        public DbSet<User> Users { get; set; }
        public DbSet<Group> Groups { get; set; }
        public DbSet<UserGroup> UserGroups { get; set; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...