views:

442

answers:

1

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 Id { get; set; }
    public string Name { get; set; }
    public ICollection<Profile> Profiles { get; set; }
}

class Profile
{
    public int Id { get; set; }
    public string Name { get; set; }
}

In the database there is a UserProfiles table that has the FK for User and FK for Profile. How can I map this?

EDIT: I understand how to to currently map with having a ICollection<User> property on the Profile, but I really don't want to have a an opposite navigation property when it should be "Users have many profiles".

+3  A: 

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

TheCloudlessSky
Glad they finally implemented this. I found myself having to add unwanted navigation properties to get around this issue. Code-First is coming along nicely!
Daniel Skinner
@Daniel - Agreed.
TheCloudlessSky