EF Code First - WithMany()

前端 未结 2 1465
你的背包
你的背包 2020-12-15 07:44

I recently came by the class ManyNavigationPropertyConfiguration , and within that class there I found a method named WithMany()

2条回答
  •  太阳男子
    2020-12-15 08:22

    An example might be this model:

    public class User
    {
        public int UserId { get; set; }
        public string Name { get; set; }
        public ICollection Roles { get; set; }
    }
    
    public class Role
    {
        public int RoleId { get; set; }
        public string Description { get; set; }
    }
    

    If you are never interested to retrieve all users which are in a specific role, adding a navigation property ...

    public ICollection Users { get; set; }
    

    ... to the Role class would be unnecessary overhead.

    But you still must EF tell that a many-to-many relationship between User and Role exists ...

    modelBuilder.Entity()
                .HasMany(u => u.Roles)
                .WithMany();
    

    ... because the default convention mappings would create a wrong relationship, namely a one-to-many relationship, corresponding to this mapping:

    modelBuilder.Entity()
                .HasMany(u => u.Roles)
                .WithOptional();
    

提交回复
热议问题