Entity Framework 6 Code First系列3: 实体类M:N配置
来源:互联网 发布:sql case when else 编辑:程序博客网 时间:2024/06/05 15:03
M:N单向映射(Role-Menu)
一般情况下,一个角色可访问多个菜单,一个菜单也可被多个角色访问,这是一种典型的M:N关联映射。
实体类Role
public class Role { /// <summary> /// 角色名称 /// </summary> public string Name { get; set; } /// <summary> /// RoleId /// </summary> public int Id { get; set; } /// <summary> /// 导航属性-关联菜单列表 /// </summary> public virtual IList<Menu> MenuList { get; set; } }
配置类OperaterInfoMap
public class RoleMap : EntityTypeConfiguration<Role> { public RoleMap() { this.ToTable("T_Role"); this.HasKey(role => role.Id); //N:N映射-如需配置双向映射,只需在.WithMany()添加Menu的导航属性即可 this.HasMany(role => role.MenuList).WithMany().Map(m => { m.MapLeftKey("RoleId"); m.MapRightKey("MenuId"); m.ToTable("T_RoleMenu"); }); } }
实体类Menu
public class Menu { /// <summary> /// MenuId /// </summary> public int Id { get; set; } /// <summary> /// Name /// </summary> public string Name { get; set; } }
配置类MenuMap
public class MenuMap:EntityTypeConfiguration<Menu> { public MenuMap() { this.ToTable("T_Menu"); this.HasKey(k => k.Id);//设置主键 } }
控制台测试程序
using (var dbContext = new EFDbContext()) { var rolelist = dbContext.RoleList.Include("MenuList") .Where(r => r.Name.Contains("面审") && r.Name.EndsWith("审核")).ToList(); foreach (var item in rolelist) { Console.Write("{0}:",item.Name); foreach (var menu in item.MenuList) { Console.Write(" {0} ", menu.Name); } Console.WriteLine(); } }
执行结果
Profile监听到的结果:
//N:N映射-如需配置双向映射,只需在.WithMany()添加Menu的导航属性即可 this.HasMany(role => role.MenuList).WithMany().Map(m => { m.MapLeftKey("RoleId"); m.MapRightKey("MenuId"); m.ToTable("T_RoleMenu"); });
m.ToTable(“T_RoleMenu”);设置M:N关联借助的第三张辅助表“T_RoleMenu”
m.MapLeftKey(“RoleId”);设置表T_RoleMenu中外键RoleId指示的是表T_Role中的主键Id
m.MapRightKey(“MenuId”);设置表T_RoleMenu中外键MenuId指示的是表T_Menu中的主键Id
0 0
- Entity Framework 6 Code First系列3: 实体类M:N配置
- Entity Framework 6 Code First系列2: 实体类1:N配置
- Entity Framework 6 Code First系列1: 实体类1:1配置
- Entity Framework Code First映射配置
- Entity Framework Code first
- Entity Framework Code First实体关联数据加载
- Entity Framework Code First添加修改及删除单独实体
- Entity Framework Code First实体对象变动跟踪
- Code First :使用Entity. Framework编程(3)
- Entity Framework 5.0系列之Code First数据库迁移
- Entity Framework 5.0系列之自动生成Code First代码
- Entity Framework 5.0系列之Code First数据库迁移
- Entity Framework 5.0系列之自动生成Code First代码
- Entity Framework 5.0系列之自动生成Code First代码
- Entity Framework 5.0系列之Code First数据库迁移
- Entity Framework 5.0系列之自动生成Code First代码
- Entity Framework 5.0系列之Code First数据库迁移
- Entity Framework 6.1-Code First
- 【Window内核驱动开发】——通过符号链接获取真实设备
- NOIP2016全国信息学分区联赛提高组第二试 组合问题
- Spring事务传播机制和数据库隔离级别
- 开发技巧笔记
- PowerDesigner 反向生成
- Entity Framework 6 Code First系列3: 实体类M:N配置
- Linux下编译APM工具要求
- 查看APK的签名信息
- IOS开发之按虚拟键盘的return健隐藏键盘
- 75. Sort Colors
- 项目总结(2016.5-2016-11)
- 高效率开发的Android Studio插件收集
- 微信开发中遇到的问题
- Label 文字显示一行半,或者多行半