簡體   English   中英

EntityFramework從表中檢索信息

[英]EntityFramework retrieving information from a table

我的dbContext中有一個ManyToMany關系

modelBuilder.Entity<Role>().HasMany(r => r.Permissions).WithMany(p => p.Roles)
                .Map(
                    m =>
                    {
                        m.MapLeftKey("role_id");
                        m.MapRightKey("per_id");
                        m.ToTable("roles_permissions");
                    }
                );

Role.cs看起來像:

public class Role
{
    [Key]
    public int role_Id { get; set; }
    public string Name { get; set; }
    public ICollection<LoginModel> Users { get; set; }

    public ICollection<Permission> Permissions { get; set; }

    public Role()
    {
        Users = new List<LoginModel>();
        Permissions = new Collection<Permission>();

    }
}

和Permission.cs看起來像:

public class Permission
{
    [Key]
    public int permi_Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Role> Roles { get; set; }

    public Permission()
    {
        Roles = new Collection<Role>();
    }
}

我想從特定角色獲取列表中的所有權限...

var role = from a in db.Roles
           where a.Name.Equals(txt_modificar_nombre.Text)
           select a.Permissions;

role不允許我獲得許可,因為var role的類型為: 在此處輸入圖片說明

有人能幫我嗎 ?

這些是我要打印的值...

var role斷點值

在此處輸入圖片說明

您要將每個匹配的角色投影到權限序列中 因此,您可以查詢返回序列的序列。 您需要展平結果:

var permissions = from r in db.Roles
                  where r.Name == txt_modificar_nombre.Text
                  from p in r.Permissions
                  select p;

在lambda語法中,有單獨的運算符SelectMany用於投影和展平:

var permissions = db.Roles.Where(r => r.Name == txt_modificar_nombre.Text)
                          .SelectMany(r => r.Permissions);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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