4

我有3個表需要與實體框架進行映射,我不確定正確的方法去做這件事。這裏是我的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我只想做這樣的事情:(?,可能流利API)

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 

我是比較新的實體框架,所以我不知道來解決這個使用EF4的DbContext的最佳方式,但我希望它非常簡單。

在此先感謝。

回答

5

事實證明,我需要使用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")); 
+0

請顯示爲此工作所需的型號更新。例如。原始帖子中的任何實體都沒有「用戶」屬性。 – im1dermike