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