在特定 SQL 中获取堆栈溢出错误 WPF/C#
Getting Stack Overflow Error on specific SQL pull in WPF/C#
我的代码一直挂在 'using(SqlDataReader Reader = new cmd.ExecuteReader())' 行并抛出 WhosebugException。对于从同一个数据库中提取的任何其他 SQL,我都没有遇到过这个问题,使用相同的总体思路。我对可能导致此问题的原因感到茫然,我通过更改某些行来解决它有点麻烦,但它又回到了那条特定的行上。
public TeamRepository getTeamsinLeague(League L)
{
SqlCommand cmd;
Model.TeamRepository MTR = new TeamRepository();
Model.Team T = new Team();
if (L == null) { L = new League { Id = 1 }; }
String queryString = "SELECT Id, City, Name, r, g, b, Fontr, Fontg, Fontb FROM dbo.Team WHERE Team.League = " + L.Id +";";
using (SqlConnection conn = new SqlConnection(connection_String))
{
conn.Open();
cmd = new SqlCommand(queryString, conn);
using (SqlDataReader Reader = cmd.ExecuteReader())
{
while (Reader.Read())
{
T = new Team
{
Id = (int)Reader[0],
City = Reader[1].ToString(),
Name = Reader[2].ToString(),
MainRed = (int)Reader[3],
MainGreen = (int)Reader[4],
MainBlue = (int)Reader[5],
SecondaryRed = (int)Reader[6],
SecondaryGreen = (int)Reader[7],
SecondaryBlue = (int)Reader[8],
};
MTR.addTeam(T);
}
}
}
return MTR;
}
在 getTeamsInLeague 的调用中编辑
//*****************************************
//Variable Declarations
//*****************************************
public Model.TeamRepository _TeamRepository { get; set; }
public Model.Team _SelectedTeam;
public LeagueRepository _MLR { get; set; }
private Model.League _L;
public Model.League L { get { return _L; } set { _TeamRepository = sdm.getTeamsinLeague(L); L = value; } }
SqlDataMap sdm = new SqlDataMap();
和相关的 XML
<ComboBox ItemsSource="{Binding _MLR.LeagueArray}" SelectedItem="{Binding L}" DisplayMemberPath="Name" HorizontalAlignment="Left" VerticalAlignment="Top" Width="120"/>
你的 L
属性 执行得很奇怪。您不能在同一 属性 本身的 setter 中设置 属性。这将导致 WhosebugException
.
设置 字段 而不是 属性:
public Model.League L
{
get { return _L; }
set { _L = value; _TeamRepository = sdm.getTeamsinLeague(_L); }
}
我的代码一直挂在 'using(SqlDataReader Reader = new cmd.ExecuteReader())' 行并抛出 WhosebugException。对于从同一个数据库中提取的任何其他 SQL,我都没有遇到过这个问题,使用相同的总体思路。我对可能导致此问题的原因感到茫然,我通过更改某些行来解决它有点麻烦,但它又回到了那条特定的行上。
public TeamRepository getTeamsinLeague(League L)
{
SqlCommand cmd;
Model.TeamRepository MTR = new TeamRepository();
Model.Team T = new Team();
if (L == null) { L = new League { Id = 1 }; }
String queryString = "SELECT Id, City, Name, r, g, b, Fontr, Fontg, Fontb FROM dbo.Team WHERE Team.League = " + L.Id +";";
using (SqlConnection conn = new SqlConnection(connection_String))
{
conn.Open();
cmd = new SqlCommand(queryString, conn);
using (SqlDataReader Reader = cmd.ExecuteReader())
{
while (Reader.Read())
{
T = new Team
{
Id = (int)Reader[0],
City = Reader[1].ToString(),
Name = Reader[2].ToString(),
MainRed = (int)Reader[3],
MainGreen = (int)Reader[4],
MainBlue = (int)Reader[5],
SecondaryRed = (int)Reader[6],
SecondaryGreen = (int)Reader[7],
SecondaryBlue = (int)Reader[8],
};
MTR.addTeam(T);
}
}
}
return MTR;
}
在 getTeamsInLeague 的调用中编辑
//*****************************************
//Variable Declarations
//*****************************************
public Model.TeamRepository _TeamRepository { get; set; }
public Model.Team _SelectedTeam;
public LeagueRepository _MLR { get; set; }
private Model.League _L;
public Model.League L { get { return _L; } set { _TeamRepository = sdm.getTeamsinLeague(L); L = value; } }
SqlDataMap sdm = new SqlDataMap();
和相关的 XML
<ComboBox ItemsSource="{Binding _MLR.LeagueArray}" SelectedItem="{Binding L}" DisplayMemberPath="Name" HorizontalAlignment="Left" VerticalAlignment="Top" Width="120"/>
你的 L
属性 执行得很奇怪。您不能在同一 属性 本身的 setter 中设置 属性。这将导致 WhosebugException
.
设置 字段 而不是 属性:
public Model.League L
{
get { return _L; }
set { _L = value; _TeamRepository = sdm.getTeamsinLeague(_L); }
}