EF CF Настроить сопоставление многие ко многим вручную - PullRequest
5 голосов
/ 20 марта 2011

У меня есть база данных. В данный момент я пытаюсь отобразить мои новые объекты Entity в эту БД с помощью кода инфраструктуры объектов. Ниже представлен класс User, в котором есть коллекция друзей. Как видите, это отношение «многие ко многим» к одной и той же таблице. Как можно сопоставить это отношение с таблицей user_friend, в которой есть столбцы user_id и friend_id.

public class User
{
    private ICollection<User> _friends = new List<User>();
    public ICollection<User> Friends { get{return _firends;} }
}

moduleBuilder.Entity<User>().HasMany????.ToTable("user_friend");

1 Ответ

6 голосов
/ 20 марта 2011

Вы должны перейти на свободный API для этого:

public class User
{
    public int UserId { get; set; }
    public ICollection<User> Friends { get; set; }
}

public class Context : DbContext
{
    public DbSet<User> Users { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<User>().HasMany(u => u.Friends).WithMany().Map(c =>
        {
            c.MapLeftKey(u=>u.UserID, "user_id");
            c.MapRightKey(f=>f.FriendID, "friend_id");
            c.ToTable("user_friend");
        });
    }
}
...