为了账号安全,请及时绑定邮箱和手机立即绑定

多对多映射表

多对多映射表

C#
守候你守候我 2019-12-27 09:48:11
从我在网上和《编程实体框架》 CodeFirst书中看到的示例中,当您在两个类上都有一个集合时,EF会创建一个映射表,例如MembersRecipes,每个类的主键都将链接到该表。但是,当我执行以下操作时,我改为在Recipes表中获得一个新字段,Member_Id并Recipe_Id在该Members表中获得a 。这只会创建两个一对多的关系,而不是一对多的关系,因此我可以将Member 3链接到食谱(4,5,6),将Recipe 4链接到成员(1,2,3)等。有没有创建此映射表的方法?如果是的话,您如何命名其他名称,例如“ cookbooks”?谢谢    public abstract class Entity {        [Required]        public int Id { get; set; }    }       public class Member : Entity {        [Required]        public string Name { get; set; }        public virtual IList<Recipe> Recipes { get; set; }    }    public class Recipe : Entity {          [Required]        public string Name { get; set; }        [ForeignKey("Author")]        public int AuthorId { get; set; }        public virtual Member Author { get; set; }            ....        public virtual IList<Member> Members { get; set; }    }更新: 以下是我尝试过的另一种方法,该方法不使用Fluent API,并用所有者标志替换AuthorId&Author上Recipe的内容,我还将以下示例从重命名Cookbooks为MembersRecipes,这也解决了与答案类似的问题,但如上所述进一步的含义。public class MembersRecipes {    [Key, Column(Order = 0)]    [ForeignKey("Recipe")]    public int RecipeId { get; set; }    public virtual Recipe Recipe { get; set; }    [Key, Column(Order = 1)]    [ForeignKey("Member")]    public int MemberId { get; set; }    public virtual Member Member { get; set; }    public bool Owner { get; set; }}在Recipe&Member班级中,我将集合更改为public virtual IList<MembersRecipes> MembersRecipes { get; set; }
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 361 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信