【EF Code First】 一对多、多对多的多重关系配置
2015-03-18 16:26
423 查看
这里使用用户表(User)和项目(Project)表做示例
有这样一个需求:
用户与项目的关系是:一个用户可以发多个项目,可以参加多个项目,而项目可以有多个参与成员和一个发布者
[其中含1-n和n-n的关系]
1-n:一个用户可以发布多个项目
n-n:一个项目的参与用户可以多个,一个用户可以参与多个项目
所以在写映射关系的代码时需要注意指定属性之间的关系
项目结构:
实体类结构设计如下
然后,新建一个映射类 UserMap
EF里的实体关系配置分为Has和With系列的方法:Optional 可选的、Required 必须的、Many 多个
EF上下文中
运行后,表结构
下一节:【EF Code First】 一对一、一对多的多重关系配置
有这样一个需求:
用户与项目的关系是:一个用户可以发多个项目,可以参加多个项目,而项目可以有多个参与成员和一个发布者
[其中含1-n和n-n的关系]
1-n:一个用户可以发布多个项目
n-n:一个项目的参与用户可以多个,一个用户可以参与多个项目
所以在写映射关系的代码时需要注意指定属性之间的关系
项目结构:
实体类结构设计如下
/// <summary> /// 用户 /// </summary> public class User { public int ID { get;set;} public string NickName { get; set; } public DateTime RegisterTime { get; set; } /// <summary> /// 参与的项目列表 /// </summary> public ICollection<Project> Projects { get; set; } }
/// <summary> /// 项目 /// </summary> public class Project { public int ID { get; set; } public string Title { get; set; } public string Description { get; set; } /// <summary> /// 项目发布者 /// </summary> public virtual User Founder { get; set; } /// <summary> /// 参与成员 /// </summary> public virtual ICollection<User> Member { get; set; } }
然后,新建一个映射类 UserMap
public class UserMap : EntityTypeConfiguration<User> { public UserMap() { //定义用户与项目之间的多对多关系 this.HasMany<Project>(u => u.Projects).WithMany(p=>p.Member); } }
EF里的实体关系配置分为Has和With系列的方法:Optional 可选的、Required 必须的、Many 多个
EF上下文中
public class DB:DbContext { public DB() : base("DefaultConnection") { } public DbSet<User> User { get; set; } public DbSet<Project> Project { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();//移除复数表名的契约 // base.OnModelCreating(modelBuilder); modelBuilder.Configurations.Add(new UserMap()); } }
class Program { static void Main(string[] args) { DB db = new DB(); db.User.ToList(); Console.ReadKey(); } }
运行后,表结构
下一节:【EF Code First】 一对一、一对多的多重关系配置
相关文章推荐
- EF Code First关系规则及配置
- EF Code First关系规则及配置
- 【EF Code First】 一对一、一对多的多重关系配置
- EF CodeFirst 关系配置
- EF Code First数据库映射规则及配置
- EF Code First 学习笔记:关系
- EF CodeFirst 一对一关系定义
- EF Codefirst 多对多关系 操作中间表的 增删改查(CRUD)
- Entity Framework Code First (五)Fluent API - 配置关系
- EF里一对一、一对多、多对多关系的配置和级联删除
- EF CodeFirst 一对一关系、复杂类型的演变
- EF之Code First设置主外键关系(三)
- EF Code First 学习笔记:约定配置
- EF Code First(约定配置)
- EF Codefirst 多对多关系 操作中间表的 增删改查(CRUD)
- EF6 调用SQLite(适用于code first,非code first参考官方配置文件)
- Configure One-to-One(配置一对一关系)【Code-First系列】
- EF Code First 学习笔记:约定配置
- EF里一对一、一对多、多对多关系的配置和级联删除
- Entity Framework Code First (五)Fluent API - 配置关系