所以我有一个表LNK_USER_ROLE
,其中我将用户分配给各自的角色ID。
在这种情况下,我尝试同时分配" ADMIN"和"用户"角色给用户。因此,我从角色表中查询角色的ID,以便我可以将它们与用户ID一起添加到我的LNK_USER_ROLE
表中。 (LNK_USER_ROLE
ROLE_ID
是ID
db中ROLE
的外键
var db = new MySqlContext();
List<int> RoleId = db.ROLES.Where(u => u.ROLE_NAME == "ADMIN" && u.ROLE_NAME == "USER").Select(u => u.ROLE_ID).ToList();
foreach(int id in RoleId)
{
LNK_USER_ROLE Roles = new LNK_USER_ROLE();
{
Roles.ROLE_ID = id;
Roles.USER_ID = db.USERS.Where(u => u.EMAIL == model.Users.EMAIL && u.NAME == model.Users.NAME).Select(u => u.USER_ID).Single();
};
db.LNK_USER_ROLE.Add(Roles);
}
db.SaveChanges();
不幸的是,没有任何反应!正如你所看到的,如果这段代码成功,我最有可能在我的表中添加2行..但是我不知道我应该如何使用Foreach
插入行,我似乎无法找到符合我需要的先前问题。
答案 0 :(得分:0)
问题在于And(&&
)和Or(||
)运算符。
该查询正在尝试选择ROLE_NAME等于“&#39; ADMIN&#39;和&#39;用户&#39;在同一时间。
从
更改查询 List<int> RoleId = db.ROLES.Where(u => u.ROLE_NAME == "ADMIN" && u.ROLE_NAME == "USER").Select(u => u.ROLE_ID).ToList();
到
List<int> RoleId = db.ROLES.Where(u => u.ROLE_NAME == "ADMIN" || u.ROLE_NAME == "USER").Select(u => u.ROLE_ID).ToList();
将导致选择ROLE NAME等于&#39; ADMIN&#39;或者&#39; USER&#39;