zoukankan      html  css  js  c++  java
  • Entity Framework 6 Code First 实践系列(1):实体类配置-根据依赖配置关系和关联(补充多对多关系的配置)

    在上一篇转载的文章中,缺少了多对多的配置。实践的时候发现使用中间表实现多对多的时候,如果在Fluent API中不指定外键,还是会有些问题。有时候会出现"xxx_Id"不存在这样的错误。所以手动指定肯定不会有问题,实现如下:

    添加一个活动类Activity,跟旅行类Trip是多对多的关系。这个也不难理解:一个旅行有多个活动,一个活动可以属于多个旅行。

    复制代码
    /// <summary>
        /// 活动类
        /// </summary>
        public class Activity
        {
            public int ActivityId { get; set; }
            //[Required, MaxLength(50)]
            public string Name { get; set; }
    
            public List<Trip> Trips { get; set; }    //和Trip类是多对多关系
        }
    复制代码

    跟之前的一样在BreakAwayContext类里添加Activity类,让数据库上下文知道Activity类:

    public DbSet<CodeFirst.Model.Activity> Activitys { get; set; }

    同时在Trip旅行类里添加上导航属性,形成跟Activity活动类的多对多关系

    public List<Activity> Activitys { get; set; }

    ok,已经可以了,跑下程序得到如下数据库:

    可以看出,EF里的多对多关系是由第三张表来连接两个表的。ActivityTrips表连接了Activityes表和Trips表。表名列名都是默认命名,都可以自己配置。文章的开头已经说了那么多了,多对多肯定是用HasMany和WithMany方法,在ActivityMap类里写下如下Fluent API:

    this.HasMany(a => a.Trips).WithMany(t => t.Activitys).Map(m =>
                    {
                        m.ToTable("TripActivities");      //中间关系表表名
                        m.MapLeftKey("ActivityId");        //设置Activity表在中间表主键名
                        m.MapRightKey("TripIdentifier");   //设置Trip表在中间表主键名
                    });

    同样也可以在TripMap里配置,顺序不一样罢了:

    this.HasMany(t => t.Activities).WithMany(a => a.Trips).Map(m =>
                {
                    m.ToTable("TripActivities");    //中间关系表表名
                    m.MapLeftKey("TripIdentifier");   //设置Activity表在中间表的主键名
                    m.MapRightKey("ActivityId");    //设置Trip表在中间表的主键名
                });
  • 相关阅读:
    IP地址结构分类(包括主机号和网络好计算)
    抓包工具fiddler的Https证书设置
    获取目录结构,并写到txt文档里
    十五、React:简单点餐实例:知识点,html解析写法
    git commit -m 和 git commit -am 区别
    用Git管理项目进行版本控制
    pycharm 设置项目的编译器
    十四、 React路由(react-router4.x): 动态路由、get传值、React中使用url模块
    十三、react-router 4.x的基本配置
    进程间的通讯
  • 原文地址:https://www.cnblogs.com/sjqq/p/7701416.html
Copyright © 2011-2022 走看看