我的accountRepository
中有以下代码public string[] GetRolesForUser(string email)
{
// User rolesUser = FindByMail(email);
IEnumerable<UserRole> RoleList = context.UserRolesSet.Where(u => u.user_id == 1).AsEnumerable();
string[] arr1 = new string[RoleList.Count()];
int i = 0;
foreach (UserRole r in RoleList)
{
arr1[i] = r.roles.name;
i++;
}
return arr1;
}
这应该有效,但事实并非如此。当它循环遍历foreach循环时,它会抛出这个错误:
异常详细信息:MySql.Data.MySqlClient.MySqlException:已经有一个与此Connection关联的打开DataReader,必须先关闭它。
我的foreach循环错了吗?
答案 0 :(得分:2)
您可以简化方法:
IEnumerable<UserRole> RoleList = context.UserRolesSet.Where(u => u.user_id == 1);
return RoleList.Select(x => x.roles.name).ToArray();
答案 1 :(得分:0)
尝试以下代码。使用ToArray可以确保它预先填充所有UserRoles,因此它将使用DataReader完成。
public string[] GetRolesForUser(string email)
{
// User rolesUser = FindByMail(email);
IEnumerable<UserRole> RoleList = context.UserRolesSet.Where(u => u.user_id == 1).ToArray();
string[] arr1 = new string[RoleList.Count()];
int i = 0;
foreach (UserRole r in RoleList)
{
arr1[i] = r.roles.name;
i++;
}
return arr1;
}