【EF Code First】 多对多关系配置

这里使用用户表(User)和项目(Project)表做示例

有这样一个需求:

用户与项目的关系是:一个用户可以发多个项目,可以参加多个项目,而项目可以有多个参与成员和一个发布者

项目结构:

实体类结构设计如下

/// <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上下文中

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();
        }
    }

运行后,表结构

时间: 2024-07-31 22:25:21

【EF Code First】 多对多关系配置的相关文章

[C#/.NET]Entity Framework(EF) Code First 多对多关系的实体增,删,改,查操作全程详细示例

本文我们来学习一下在Entity Framework中使用Context删除多对多关系的实体是如何来实现的.我们将以一个具体的控制台小实例来了解和学习整个实现Entity Framework 多对多关系的实体删除的操作过程. 你将学习到 怎样创建一个引用Entity Framework的项目: 怎样配置Entity Framework的数据库连接: 怎样去掉Entity Framework Code First 生成的表名的复数: 怎样通过EntityTypeConfiguartion配置实体的

EntityFramework Core2.0 多对多关系配置

? 在EF6.0 中,多对多关系配置时,系统会自动生成第三张表,来将两张有互相约束关系的表联系起来,但是在EF Core2.0中,我们需要手动建立第三张表,比如说有两个模型Passage.cs和Category.cs,若想建立两者之间的多对多关系,我们就需要借助第三张表PassageCategory来实现: public class Passage { //文章编号 [Key] public long PassageId { get; set; } //标题 public string Titl

使用annotation配置hibernate(3):多对多关系配置

数据库表结构 Student.java 1 @Entity 2 @Table(name = "student") 3 public class Student { 4 @Id 5 @Column(name = "id") 6 @GenericGenerator(name = "generator",strategy = "native") 7 @GeneratedValue(generator = "generato

EF Code First 学习笔记:关系

一对多关系 项目中最常用到的就是一对多关系了.Code First对一对多关系也有着很好的支持.很多情况下我们都不需要特意的去配置,Code First就能通过一些引用属性.导航属性等检测到模型之间的关系,自动为我们生成外键.观察下面的类: public class Destination { public int DestinationId { get; set; } public string Name { get; set; } public string Country { get; s

hibernate多对多关系配置--增删改查

hibernate多对多关联配置--并实现增删改查 hibernate就不多介绍了,这里就直接上我项目中使用的例子做说明. 数据模型 这是项目中用户和用户组的数据模型er图草稿,具体的model对象字段就以项目中的为主了. model类以及pojo接口,这里pojo接口用不上,大家测试的时候也可以去掉 package com.supre.model; import java.io.Serializable; import java.util.Set; public class User { pr

EF Code First 学习笔记:约定配置

要更改EF中的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面;还有一个就是Fluent API,通过新增相应的配置类来覆盖默认配置.现在我们用这两个来对比了解EF中的约定配置. 主键:KEY Data Annotations:通过Key关键字来标识一个主键 [Key] public int DestinationId { get; set; } Fluent API:

[转载]EF Code First 学习笔记:约定配置

要更改EF中的默认配置有两个方法,一个是用Data Annotations(在命名空间System.ComponentModel.DataAnnotations;),直接作用于类的属性上面;还有一个就是Fluent API,通过新增相应的配置类来覆盖默认配置.现在我们用这两个来对比了解EF中的约定配置. 主键:KEY Data Annotations:通过Key关键字来标识一个主键 [Key] public int DestinationId { get; set; } Fluent API:

EF Code First教程-02 约定配置

示例: public class Phone { [Key] //主键 public int Id { get; set; } [Required] //不能为空 [MinLength(2),MaxLength(20)] //最小长度2,最大长度20 public string Name { get; set; } [StringLength(50)] //字符串长度为50 public string Number { get; set; } public DateTime CreateDate

EF Code First 配置的相关内容

I.实体间一对一的关系 添加一个PersonPhoto类,表示用户照片类 1 /// <summary> 2 /// 用户照片类 3 /// </summary> 4 public class PersonPhoto 5 { 6 [Key] 7 public int PersonId { get ; set ; } 8 public byte [] Photo { get ; set ; } 9 public string Caption { get ; set ; } // 标题