前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Entity Framework 小知识(五)

Entity Framework 小知识(五)

作者头像
喵叔
发布2020-09-08 16:19:16
3940
发布2020-09-08 16:19:16
举报
文章被收录于专栏:喵叔's 专栏喵叔's 专栏

多对多关系映射 中关联表是EF自动生成的。但有时候我们需要显示定义关联表。我们可以按照如下步骤定义(继续使用多对多关系映射这篇文章饿代码):

1.定义关联表类:

代码语言:javascript
复制
public class StudentCourses : BaseEntity
{
    public int StudentId { get; set; }
    public virtual Student Student { get; set; }
    public int CourseId { get; set; }
    public virtual Course Course { get; set; }
}

2.修改 Student 和 Courses 类中的导航属性:

代码语言:javascript
复制
public class Student:BaseEntity
{
    public string Name { get; set; }
    public int Age { get; set; }
    public virtual ICollection<StudentCourses> StudentCourses { get; set; }
}

public class Course : BaseEntity
{
    public string Name { get; set; }
    public string TeacherName { get; set; }
    public virtual ICollection<StudentCourses> StudentCourses { get; set; }
}

3.修改 StudentMapCoursesMap 映射:

代码语言:javascript
复制
public class StudentsMap : EntityTypeConfiguration<Student>
{
    public StudentsMap()
    {
        //表名称
        ToTable("Students");
        //主键
        HasKey(p => p.Id);

        //设置主键自增长
        Property(p => p.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        //设置要映射的数据
        Property(p => p.Name).HasColumnType("VARCHAR").HasMaxLength(50);
        Property(p => p.Age);
        Property(p => p.CreateDateTime);

        //设置关系
        HasMany(p => p.StudentCourses)
            .WithRequired(p => p.Student)
            .HasForeignKey(p => p.StudentId);

    }
}

public class CourseMap : EntityTypeConfiguration<Course>
{
    public CourseMap()
    {
        ToTable("Coureses");
        HasKey(p => p.Id);
        Property(p => p.Id)
            .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
        Property(p => p.Name).HasColumnType("VARCHAR").HasMaxLength(50);
        Property(p => p.TeacherName);
        Property(p => p.CreateDateTime);

        HasMany(p => p.StudentCourses)
            .WithRequired(p => p.Course)
            .HasForeignKey(p => p.CourseId);
    }
}

运行代码,查看数据库发现生成了同样的数据库,多对多关系也正确的反映出来。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-07-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档