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