实体框架,代码优先,Map链接表

qacovj5a  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(220)

我正在使用c#vs2017编写一个备份到mysql数据库的webapi restful服务。首先,我要说明的是,我无法让mysql集成正确地工作以实现datbase-first设计,所以我要反过来先实现代码。我已经试着按照我能找到的所有文章让数据库先工作,但没有什么像预期的那样工作-我在不同的阶段得到各种错误,但有时,我无法实现数据库先。
所以,先编写代码,我有一个场景,我不知道如何Map它。
我有以下实体/表格:students-自解释类-一个学年的细节-不同年份的细节studentclass-学生和班级之间的链接表格,这样每个学生可以在多个班级。然而,studentclass表还有一个额外的字段-yearid,确保studentclass链接只对一个特定的年份有效。
student表有studentid,class表有classid,year表有yearid作为主键。studentclass表包含以下字段-所有字段都包含主键:studentid、classid、yearid
student类包含student表的所有字段以及以下字段,并将其链接到类列表:

public virtual ICollection<Class> Classes { get; set; }

class类包含class表的所有字段以及以下内容,将单个类链接到多个学生:public virtual icollection students{get;集合;}
我的databasecontext类具有以下内容:

public DbSet<Student> Students { get; set; }
public DbSet<Class> Classes { get; set; }
public DbSet<Year> Years { get; set; }

在onmodelcreating方法中,它还具有以下功能:

modelBuilder.Entity<Student>()
  .HasMany<Class>(s => s.Classes)
  .WithMany(c => c.Students)
  .Map(cs =>
    {
        cs.MapLeftKey("studentID");
        cs.MapRightKey("classID");
        cs.ToTable("studentclass");
    });

虽然这能很好地将学生与课堂联系起来,但这对一年没有任何影响。
我需要做什么才能在链接/实体中包含yearid,以便对象本身代表一个学生,以及他们在给定年份的所有班级?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题