C# 序列包含多个元素异常,但数据库中只有一个元素异常
我构建了一个查询,通过用户名查找用户。当我运行程序时,我得到: InvalidOperationException:序列包含多个元素 我检查了测试数据库,只有4个用户,没有双重名称。例外从何而来?以下是查询:C# 序列包含多个元素异常,但数据库中只有一个元素异常,c#,database,asp.net-mvc-4,linq-to-sql,invalidoperationexception,C#,Database,Asp.net Mvc 4,Linq To Sql,Invalidoperationexception,我构建了一个查询,通过用户名查找用户。当我运行程序时,我得到: InvalidOperationException:序列包含多个元素 我检查了测试数据库,只有4个用户,没有双重名称。例外从何而来?以下是查询: public void setUser(String userName) { AzaraUser = DatabaseConnection.DataContext.GetTable<AzaraUser>() .SingleOrDefaul
public void setUser(String userName)
{
AzaraUser = DatabaseConnection.DataContext.GetTable<AzaraUser>()
.SingleOrDefault(a => a.ProgramUserName == userName || a.UserName == userName);
}
只有当存在多个记录时,才会发生此异常。 请尝试在SQLServerManagementStudio或任何您拥有的工具中运行查询,或者尝试调试代码并查看用户名的值。 e、 g 或者尝试:
public List<AzaraUser> setUser(String userName)
{
AzaraUser = DatabaseConnection.DataContext.GetTable<AzaraUser>().WHERE(a => a.ProgramUserName == userName || a.UserName == userName).ToList<AzaraUser>();
}
public List setUser(字符串用户名)
{
AzaraUser=DatabaseConnection.DataContext.GetTable()。其中(a=>a.ProgramUserName==userName | | a.userName==userName)。ToList();
}
错误非常明显。尝试将SingleOrDefault
更改为Where
,并将ToList
添加到末尾,然后在下一行放置断点,以便查看返回的实际行
AzaraUser = DatabaseConnection.DataContext.GetTable<AzaraUser>()
.Where(a => a.ProgramUserName == userName || a.UserName == userName)
.ToList();
AzaraUser=DatabaseConnection.DataContext.GetTable()
.其中(a=>a.ProgramUserName==用户名| | a.userName==用户名)
.ToList();
此外,还要确保您连接到的是测试数据库,而不是记录重复的其他数据库。他说没有重复的名称。我发现了为什么我会得到不止一个结果,而问题在代码中出现得稍早一些。目前我不确定为什么会发生这种情况,所以我用informations.WebSecurity.CurrentUserName将字符串“”补充我的问题。这是在数据库中搜索。数据库中目前有4条记录。只有一条记录有ProgramUserName,所有其他记录在此行中都有null。我现在通过一个变通办法解决了这个问题,所以程序正在运行,但我想知道WebSecurity在什么时候获得登录用户的用户名。
public List<AzaraUser> setUser(String userName)
{
AzaraUser = DatabaseConnection.DataContext.GetTable<AzaraUser>().WHERE(a => a.ProgramUserName == userName || a.UserName == userName).ToList<AzaraUser>();
}
AzaraUser = DatabaseConnection.DataContext.GetTable<AzaraUser>()
.Where(a => a.ProgramUserName == userName || a.UserName == userName)
.ToList();