我有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)解决这个问题的最佳方法,但我希望它很直接。
提前致谢。
答案 0 :(得分: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"));