博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Entity Framework Code First 模式-建立多对多联系
阅读量:5894 次
发布时间:2019-06-19

本文共 2426 字,大约阅读时间需要 8 分钟。

Entity Framework 在建立多对多的联系时,会生成一个中间表,用来表示这个多对多的关系。这和数据库设计时从概念模型到逻辑模型转化时,多对多的关系不能和任何一端的实体合并,需要将关系也转化为关系模型。例子使用角色(Role)和用户(User),一个角色会有多个用户,一个用户拥有多个角色。

1.默认约定

代码:

public partial class Role    {        public int RoleID { get; set; }        public string RoleName { get; set; }        public virtual ICollection
Users { get; set; } }
public class User    {        public int UserID { get; set; }        public string UserName { get; set; }        public string Password { get; set; }        public Nullable
IsValid { get; set; } public virtual ICollection
Roles { get; set; } }

结果:

2.FluentAPI 方式

这边展示用映射类的方式去建立表,即为每个实体类去建立一个映射到数据库的类,在这里面定义映射到数据库的相关属性。

代码:

public partial class Role    {        public int RoleID { get; set; }        public string RoleName { get; set; }        public virtual ICollection
Users { get; set; } }
Role类
public class RoleMap:EntityTypeConfiguration
{ public RoleMap() { //主键 this.HasKey(s => s.RoleID); //属性的特性 this.Property(s => s.RoleName) .HasMaxLength(15); //类映射到数据库表和列的相关说明 this.ToTable("Role"); this.Property(s => s.RoleID).HasColumnName("Id"); //实体关系之间的定义 this.HasMany(s => s.Users) .WithMany(s => s.Roles) .Map(m => { m.ToTable("RoleUser"); m.MapLeftKey("RoleId"); m.MapRightKey("UserID"); }); } }
RoleMap 映射类
public class User    {        public int UserID { get; set; }        public string UserName { get; set; }        public string Password { get; set; }        public Nullable
IsValid { get; set; } public virtual ICollection
Roles { get; set; } }
User 类
public UserMap()        {            //主键            this.HasKey(s => s.UserID);            //属性            this.Property(s => s.UserName)                .HasMaxLength(10);            // //类映射到数据库表和列的相关说明            this.ToTable("User");            this.Property(s => s.UserName).HasColumnName("Name");        }
UserMap 映射类

在数据上下文类中的OnModelCreating方法加入如下代码:

modelBuilder.Configurations.Add(new RoleMap());modelBuilder.Configurations.Add(new UserMap());

结果:

 

转载于:https://www.cnblogs.com/engineerlm/p/7608476.html

你可能感兴趣的文章
每天一个linux命令(25):linux文件属性详解
查看>>
go微服务框架go-micro深度学习(三) Registry服务的注册和发现
查看>>
python 重载方法有哪些特点 - 老王python - 博客园
查看>>
在Fedora8上安装MySQL5.0.45的过程
查看>>
设计模式之命令模式
查看>>
android 测试 mondey
查看>>
Spring AOP项目应用——方法入参校验 & 日志横切
查看>>
使用REST-Assured对API接口进行自动化测试
查看>>
王潮歌跨界指导HUAWEI P20系列发布会 颠覆传统 眼界大开!
查看>>
王高飞:微博已收购一直播 明年一季度重点是功能与流量打通
查看>>
趣头条发行区间7至9美元 预计9月14日美国上市
查看>>
新北市长侯友宜:两岸交流应从隔壁最亲近的人开始
查看>>
全面屏的Nokia X即将上线,不到2000元的信仰你要充值吗?
查看>>
HTML5音频audio属性
查看>>
ES6学习
查看>>
Centos7搭建Django环境
查看>>
序列化一个Intent
查看>>
JavaScript数据类型及语言基础--ife
查看>>
进阶 Nginx 高手必须跨越的 5 座大山
查看>>
部署P2P升级的脚本
查看>>