[英]Join EF code first many to many relationship tables
我正在開發一個asp.net mvc5 ef5應用程序。 我使用ef代碼優先方法。 我有兩個表User(UserId,Name)和Role(RoleId,Name)。 我的DataContext類如下所示:
using System.Data.Entity;
namespace WebApp.DAL
{
public class DataContext : DbContext
{
public DataContext(): base("DefaultConnection")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasMany(u => u.Roles)
.WithMany(r=>r.Users)
.Map(m =>
{
m.ToTable("UserRoles");
m.MapLeftKey("UserId");
m.MapRightKey("RoleId");
});
}
public DbSet<User> Users { get; set; }
public DbSet<Role> Roles { get; set; }
}
}
在我的控制器中,我具有DataContext類型的Context屬性。 如何在該控制器列表中按角色名稱訪問具有角色的所有用戶?
有一點簡單的方法
var adminUsers = Context.Roles.First(r => r.Name == "admin").Users
對於許多角色
string[] roles = {"admin","guest"};
var users = Context.Roles.Where(r => roles.Any(s => s == r.Name)).SelectMany(r => r.Users)
在這種情況下,無需顯式聯接,只需使用導航屬性Roles
即可查詢。
var adminUsers = Context.Users.Where(u => u.Roles.Any(r => r.Name == "admin"));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.