Many-To-Many Relationship in Code-First EF4

前端 未结 2 1855
情歌与酒
情歌与酒 2020-12-29 13:53

How do you represent a many-to-many relationship in the EF4 Code-First CTP3?

For example if I have the following classes:

class User
{
    public int         


        
相关标签:
2条回答
  • 2020-12-29 14:32

    EDIT: CTP4 was released late yesterday (July 14 2010) and there is now support for this:

    modelBuilder.Entity<Post>().HasMany(p => p.Tags).WithMany();


    I found out finally that this currently isn't possible. Microsoft is looking to add this feature (only one navigation property).

    See this link on the MSDN forums for more information: http://social.msdn.microsoft.com/Forums/en/adonetefx/thread/6920db2b-88c7-4bea-ac89-4809882cff8f

    0 讨论(0)
  • 2020-12-29 14:36

    With many to many relationships you should include navigation properties on both sides and make them virtual (to utilize lazy loading)

    class User
    {
      public int Id { get; set; }
      public string Name { get; set; }
      public virtual ICollection<Profile> Profiles { get; set; }
    }
    
    class Profile
    {
      public int Id { get; set; }
      public string Name { get; set; }
      public virtual ICollection<User> Users { get; set; }
    }
    

    Then with that setup you can define your many to many relationship (you can also let entity framework do it for you but I don't like the naming conventions it uses.)

            modelBuilder.Entity<Profile>().
                HasMany(p => p.Users).
                WithMany(g => g.Profiles).
                Map(t => t.MapLeftKey("ProfileID")
                    .MapRightKey("UserID")
                    .ToTable("UserProfiles"));
    

    This will give you a table named UserProfiles with UserID and ProfileID as Keys.

    0 讨论(0)
提交回复
热议问题