簡體   English   中英

首先連接EF代碼多對多關系表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM