Code First配置多对多关系,常规有两种方法
例如我们有一张学生表,和一张课程表,学生和课程是一个多对多的关系
方法1:单纯使用导航属性
首先在学生表中加入课程表的导航属性
然后在课程表中加入学生的导航属性
这样就可以根据导航属性,生成关联表与外键关系了
可以看到自动生成的表和外键名称都有一定的规则,如果我们想修改表名,外键名称等,我们就可以使用fluent api
方法2:使用fluent api配置映射关系
使用fluent api就可以自由的指定表名,外键名等
生成的数据库表如下:
方法3:Code First 自己管理多对多关系
上面的两种方式其实都是根据导航属性生成的,关联表只在数据库中有没有在实体中出现,
我们不好去自己操作关联表,而且关联表也最后只有2个关联的键,我们相加其他字段也不行。
所以这个时候我们可以考虑自己创建一个关联表,通过这个关联表去生成数据库,其实就是两个1对多就能搞定了
这种时候我们自己创建关联表,方便自己控制,除了两个关联的外键,我们也可以随心的添加其他可能需要的字段
这个时候其实已经可以生产关联表了。如果我们在学生表于课程表中也需要导航属性的话,我们可以把导航属性关联到
中间表去,也就是这里的UserInfo_R_Cource
另外一个表写法一样,数据库生成的表效果如下:
最近天天都是ef,人都要变成ef了
配置一对多请参考:http://www.tnblog.net/aojiancc2/article/details/2766
2019-10-24补充: 今天又被这个问题难到了!,才想起以前记录过这个问题的,突然觉得记录真的太重要了!不然自己研究很久的东西也会忘
欢迎加群讨论技术,群:677373950(满了,可以加,但通过不了),2群:656732739