We have legacy database and we map the new objects and props to the old tables and columns. So far so good. We have many-to-many relation which was mapped successfully. The intermediate table contains additional data. When we try to map the intermediate table to an object we get exception that the mapping is already defined. If we remove mapping from any side of the relation we get error that table is missing (ofc, we expect just that). I can do that easily with NHibernate and I am starting to think that EF is missing really really many features. So, please, tell me I am wrong and we can do that with EF.
Best regards
EDIT: here is a dummy sample which fails.
class User { public ICollection<User> Followers{get;set;} } class UserRelation { public User User{get;set;} public User Follower{get;set;} public DateTime CreatedOn{get;set;} }
user mapping
modelBuilder .Entity<User>() .HasMany<User>(user => user.Followers) .WithMany() .Map(m =>m.MapLeftKey("user_id").MapRightKey("follower_id") .ToTable("user_follower"));
user relation mapping
modelBuilder .Entity<UserRelation>() .ToTable("user_follower"); modelBuilder .Entity<UserRelation>() .HasOptional<User>(f => f.User) .WithRequired().Map(m => m.MapKey("user_id")); modelBuilder .Entity<UserRelation>() .HasOptional<User>(f => f.Follower) .WithRequired().Map(m => m.MapKey("follower_id")); modelBuilder .Entity<UserRelation>() .Property(entity => entity.CreatedOn) .HasColumnName("created_on");
Exception
Schema specified is not valid. Errors: (67,6) : error 0019: The EntitySet 'UserUser' with schema 'dbo' and table 'user_follower' was already defined. Each EntitySet must refer to a unique schema and table.
Edit2: Here is another example of this model: http://learnentityframework.com/LearnEntityFramework/tutorials/many-to-many-relationships-in-the-entity-data-model/