Entity Framework Mapping в таблицу поиска - PullRequest
4 голосов
/ 31 октября 2011

У меня есть 3 таблицы, которые должны быть сопоставлены с Entity Framework, и я не уверен, как это сделать. Вот мои 3 сущности:

public class User
{
   [Key] 
   public int user_id {get; set;}
   public string user_name {get; set;}

   public virtual List<Role> roles {get; set;}
}

public class Role
{
   [Key] 
   public int role_id {get; set;}

   public string role_name {get; set;}
}

public class User_Role
{
   [Key] 
   public int user_role_id {get; set;}

   public int user_id {get; set;}
   public int role_id {get; set;}
}

Обратите внимание, что сущность User_Role представляет собой таблицу поиска, которая связывает множество ролей с одним пользователем.

С SQL я бы просто сделал что-то вроде:

SELECT User.user_name, Role.role_name FROM User INNER JOIN User_Role ON User_Role.user_id = User.user_id INNER JOIN Role ON Role.role_id = User_Role.role_id WHERE User.user_id = 123

Я относительно новичок в Entity Framework, поэтому я не уверен, что это лучший способ решить эту проблему с помощью EF4 DbContext (и, возможно, Fluent API?), Но я надеюсь, что это довольно просто.

Заранее спасибо.

1 Ответ

5 голосов
/ 03 ноября 2011

Оказывается, мне нужно было использовать Fluent API для отображения таблицы многие-многие (User_Role).

     modelBuilder.Entity<Role>()
        .HasMany<User>(u => u.users)
        .WithMany(r => r.roles)
        .Map(m => 
           m.MapLeftKey("role_id")
           m.MapRightKey("user_id")
           m.ToTable("User_Role"));
...