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

时间:2018-08-05 07:12:32

标签: c# mysql ef-code-first

我正在使用C#VS2017将WebAPI RESTful服务写回到MySQL数据库。 首先,我要说明我无法正确执行MySQL集成以实现Datbase优先设计,因此我将反过来进行并首先实现代码。 我已经尝试过按照我能找到的所有文章来使数据库优先工作,但没有按预期工作-在各个阶段都遇到了各种错误,但是很遗憾,我无法首先实现数据库。

因此,首先执行代码,我不确定如何映射它。

我有以下实体/表格: 坚强-自我解释 类-类的详细信息 年份-各个年份的详细信息 StudentClass-学生和班级之间的链接表,这样每个学生可以处于多个班级中。 但是,StudentClass表还具有一个附加字段-YearId,以确保StudentClass链接仅对单个特定年份有效。

Student表具有StudentId,Class表具有ClassId,Year表具有YearId全部作为主键。 StudentClass表具有以下字段-全部包含主键: StudentId,ClassId,YearId

Student类包含Student表的所有字段以及以下字段,并将其链接到类列表:

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

“班级”班级包含“班级”表的所有字段以及以下内容,将单个班级链接到多个学生:     公共虚拟ICollection学生{组; }

我的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,以便对象本身代表一个学生,以及给定年份的所有课程,我需要做什么?

0 个答案:

没有答案
相关问题