EF CodeFirst 一对一、一对多、多对多关系
一对一关系
如图,无需专门指定,系统会默认在Person表中生成字段Pet_Id为Pet表的外键(一对一)。
Require:必要的(一对一) Optional:可选的(一对零) Principal:主要的 Dependent:次要的
使用WithRequiredPrincipal会在Pet表中生成外键,使用WithRequiredDependent会在Person表中生成外键。(其他组合一样的道理)
一对多关系
理解:一个人可以有多个宠物,一个宠物只能有一个主人
在实体类person的配置类中,person实体HasMany(有多个)Pets,WithRequired(有一个必须的)Person,HasForeignKey(设置外键)
也可以在Pet的配置类中这样配置:
this.HasRequired(p => p.Person).WithMany(p => p.Pets).HasForeignKey(p => p.FK_Person_Id);
多对多关系
注:因为使用Pet实体设置的,所以左键命名PetId,右键命名PersonId